﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-探索与发现-随笔分类-Flex</title><link>http://www.blogjava.net/zhaijianhui/category/41389.html</link><description>研究java技术</description><language>zh-cn</language><lastBuildDate>Mon, 26 Jul 2010 22:58:54 GMT</lastBuildDate><pubDate>Mon, 26 Jul 2010 22:58:54 GMT</pubDate><ttl>60</ttl><item><title>为测试 Flex 应用程序设置测试环境</title><link>http://www.blogjava.net/zhaijianhui/archive/2010/07/27/327180.html</link><dc:creator>蜘蛛</dc:creator><author>蜘蛛</author><pubDate>Mon, 26 Jul 2010 22:00:00 GMT</pubDate><guid>http://www.blogjava.net/zhaijianhui/archive/2010/07/27/327180.html</guid><wfw:comment>http://www.blogjava.net/zhaijianhui/comments/327180.html</wfw:comment><comments>http://www.blogjava.net/zhaijianhui/archive/2010/07/27/327180.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhaijianhui/comments/commentRss/327180.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhaijianhui/services/trackbacks/327180.html</trackback:ping><description><![CDATA[<h1 class="title topictitle1">为测试 Flex 应用程序设置测试环境</h1>
<div class="body taskbody">
<div>正确的用于测试 Flex 应用程序的环境设置将有助于确保可靠的功能测试结果。测试环境一般由测试人员在测试计算机上进行设置。</div>
<div class="section context">
<div class="tasklabel">
<h2 class="sectiontitle tasklabel">关于此任务</h2>
</div>
要设置测试环境：</div>
<div class="tasklabel">
<h2 class="sectiontitle tasklabel">过程</h2>
</div>
<ol class="ol steps">
    <li class="li step stepexpand"><span class="ph cmd">检查浏览器的设置：</span>
    <ol class="ol substeps" type="a">
        <li class="li substep substepexpand"><span class="ph cmd">Internet Explorer：</span>
        <ol class="ol" type="i">
            <li class="li">打开 Internet Explorer。
            <li class="li">单击<span class="ph menucascade"><span class="ph uicontrol">工具</span> &gt; <span class="ph uicontrol">互联网选项</span></span>。
            <li class="li">单击<span class="ph uicontrol">安全性</span>选项卡。
            <li class="li">选择适当的 Web 内容区域。执行下列某个步骤：
            <ul class="ul">
                <li class="li">如果在远程机器上配置了 Web 服务器，那么请完成下列步骤：
                <ol class="ol">
                    <li class="li">选择<span class="ph uicontrol">本地内部网</span>。
                    <li class="li">单击<span class="ph menucascade"><span class="ph uicontrol">站点</span> &gt; <span class="ph uicontrol">高级</span></span>。
                    <li class="li">在<span class="ph uicontrol">将此 Web 站点添加到区域</span>字段中，输入要添加到 Web 站点的 URL。
                    <li class="li">单击<span class="ph uicontrol">添加</span>，然后单击<span class="ph uicontrol">确定</span>。 </li>
                </ol>
                <li class="li">如果在本地主机上配置了 Web 服务器，那么请完成下列步骤：
                <ol class="ol">
                    <li class="li">选择<span class="ph uicontrol">本地内部网</span>。
                    <li class="li">单击<span class="ph uicontrol">定制级别</span>。
                    <li class="li">在<span class="ph uicontrol">复位至</span>列表中，选择<span class="ph uicontrol">中低</span>。
                    <li class="li">在&#8220;设置&#8221;窗格中，针对<span class="ph uicontrol">初始化且脚本 ActiveX 控件不标记为安全</span>一项单击<span class="ph uicontrol">启用</span>。
                    <li class="li">单击<span class="ph uicontrol">确定</span>。 </li>
                </ol>
                </li>
            </ul>
            </li>
        </ol>
        <li class="li substep substepexpand"><span class="ph cmd">Firefox：</span>
        <ol class="ol" type="i">
            <li class="li">单击<span class="ph menucascade"><span class="ph uicontrol">工具</span> &gt; <span class="ph uicontrol">选项</span> &gt; <span class="ph uicontrol">内容</span></span><span class="ph uicontrol">。
            <li class="li">清除<span class="ph uicontrol">阻止弹出窗口</span>复选框。
            <li class="li">单击<span class="ph menucascade"><span class="ph uicontrol">工具</span> &gt; <span class="ph uicontrol">选项</span> &gt; <span class="ph uicontrol">安全</span></span>。
            <li class="li">清除<span class="ph uicontrol">当有站点试图安装插件时发出警告</span>复选框。 </li>
        </ol>
        </li>
    </ol>
    <li class="li step stepexpand"><span class="ph cmd">打开 <span class="ph">IBM Rational Functional Tester</span>，然后单击<span class="ph menucascade"><span class="ph uicontrol">配置</span> &gt; <span class="ph uicontrol">启用测试环境</span></span>。必须启用所需要的 JRE 并将 Internet Explorer 设置为缺省 Web 浏览器。</span>
    <li class="li step stepexpand"><span class="ph cmd">在&#8220;Web 浏览器&#8221;页面中启用所需要的浏览器。</span>
    <li class="li step stepexpand"><span class="ph cmd">将测试下应用程序设置为可信以在本地运行应用程序。指向单个文件或目录的路径处于可信状态，同时所有的文件将会分配到每个选定的目录及其可信的子目录中。按照下列步骤来分配信任目标：</span>
    <ol class="ol substeps" type="a">
        <li class="li substep"><span class="ph cmd">在 C:\WINDOWS\system32\Macromed\Flash 中创建文件夹 FlashPlayerTrust。</span>
        <li class="li substep"><span class="ph cmd">在 FlashPlayerTrust 文件夹中创建一个名为 Flex 且不带扩展名的文件。</span>
        <li class="li substep"><span class="ph cmd">在 Flex 文件中输入 Flex 应用程序的目录路径。例如，如果 Flex 应用程序位于 <span class="ph filepath">C:\Test</span> 目录中，请在 Flex 文件中输入路径 <span class="ph filepath">C:\Test</span>。</span>
        <li class="li substep"><span class="ph cmd">保存文件。</span> </li>
    </ol>
    </span></li>
</ol>
</div>
<img src ="http://www.blogjava.net/zhaijianhui/aggbug/327180.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhaijianhui/" target="_blank">蜘蛛</a> 2010-07-27 06:00 <a href="http://www.blogjava.net/zhaijianhui/archive/2010/07/27/327180.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Flex Best Practices – Events</title><link>http://www.blogjava.net/zhaijianhui/archive/2009/09/18/295523.html</link><dc:creator>蜘蛛</dc:creator><author>蜘蛛</author><pubDate>Thu, 17 Sep 2009 22:53:00 GMT</pubDate><guid>http://www.blogjava.net/zhaijianhui/archive/2009/09/18/295523.html</guid><wfw:comment>http://www.blogjava.net/zhaijianhui/comments/295523.html</wfw:comment><comments>http://www.blogjava.net/zhaijianhui/archive/2009/09/18/295523.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/zhaijianhui/comments/commentRss/295523.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhaijianhui/services/trackbacks/295523.html</trackback:ping><description><![CDATA[http://unitedmindset.com/jonbcampos/2009/08/12/flex-best-practices-events/
<img src ="http://www.blogjava.net/zhaijianhui/aggbug/295523.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhaijianhui/" target="_blank">蜘蛛</a> 2009-09-18 06:53 <a href="http://www.blogjava.net/zhaijianhui/archive/2009/09/18/295523.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>cairngorm</title><link>http://www.blogjava.net/zhaijianhui/archive/2009/09/15/295207.html</link><dc:creator>蜘蛛</dc:creator><author>蜘蛛</author><pubDate>Tue, 15 Sep 2009 12:36:00 GMT</pubDate><guid>http://www.blogjava.net/zhaijianhui/archive/2009/09/15/295207.html</guid><wfw:comment>http://www.blogjava.net/zhaijianhui/comments/295207.html</wfw:comment><comments>http://www.blogjava.net/zhaijianhui/archive/2009/09/15/295207.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhaijianhui/comments/commentRss/295207.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhaijianhui/services/trackbacks/295207.html</trackback:ping><description><![CDATA[http://www.davidtucker.net/category/cairngorm/
<img src ="http://www.blogjava.net/zhaijianhui/aggbug/295207.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhaijianhui/" target="_blank">蜘蛛</a> 2009-09-15 20:36 <a href="http://www.blogjava.net/zhaijianhui/archive/2009/09/15/295207.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>对Flex开发过程中界面切换的认识（转）</title><link>http://www.blogjava.net/zhaijianhui/archive/2009/09/10/294633.html</link><dc:creator>蜘蛛</dc:creator><author>蜘蛛</author><pubDate>Thu, 10 Sep 2009 09:50:00 GMT</pubDate><guid>http://www.blogjava.net/zhaijianhui/archive/2009/09/10/294633.html</guid><wfw:comment>http://www.blogjava.net/zhaijianhui/comments/294633.html</wfw:comment><comments>http://www.blogjava.net/zhaijianhui/archive/2009/09/10/294633.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhaijianhui/comments/commentRss/294633.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhaijianhui/services/trackbacks/294633.html</trackback:ping><description><![CDATA[<p><span style="font-size: small;"><strong>1.可以使用PopUpManager进行界面切换 <br />
2.使用状态(state),自定义一些状态事件(StateEvent),在index.mxml（ｍｘ：application）中监听组件派发的状态事件类型,利用改变状态来改变显示的界面.</strong> <br />
<br />
<strong>⑴用第一种方式来实现相对简单,利用PopUpManager的一些静态方法即可实现,比较适用于一些size相对较小的可视化组件,比如:登陆表单组件,或修改一个值,要求重新输入一个新值等等类似情况.实现示例代码如下：</strong></span></p>
<div>
<div>
<div>Js代码 <embed src="http://halzhang.javaeye.com/javascripts/syntaxhighlighter/clipboard_new.swf" flashvars="clipboard=%3Cspan%20style%3D%22font-size%3A%20small%3B%22%3Evar%20win%3A*%3B%20%0Awin%20%3D%20new%20loginPanel()%3B%20%0A%2F%2F%E5%BC%B9%E5%87%BA%E6%98%BE%E7%A4%BA%E7%99%BB%E5%BD%95%E6%A1%86%20%0APopUpManager.addPopUp(win%2Cthis%2Ctrue)%3B%20%0A%2F%2F%E7%99%BB%E9%99%86%E6%A1%86%E6%98%BE%E7%A4%BA%E5%9C%A8%E4%B8%AD%E9%97%B4%20%0APopUpManager.centerPopUp(win)%3B%20%3C%2Fspan%3E" quality="high" allowscriptaccess="always" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" width="14" height="15"></div>
</div>
<ol start="1">
    <li>&lt;span&nbsp;style="font-size:&nbsp;small;"&gt;var&nbsp;win:*;&nbsp;&nbsp;&nbsp;</li>
    <li>win&nbsp;=&nbsp;new&nbsp;loginPanel();&nbsp;&nbsp;&nbsp;</li>
    <li>//弹出显示登录框&nbsp;&nbsp;&nbsp;</li>
    <li>PopUpManager.addPopUp(win,this,true);&nbsp;&nbsp;&nbsp;</li>
    <li>//登陆框显示在中间&nbsp;&nbsp;&nbsp;</li>
    <li>PopUpManager.centerPopUp(win);&nbsp;&lt;/span&gt;&nbsp;&nbsp;</li>
</ol>
</div>
<pre style="display: none;" name="code" class="js"><span style="font-size: small;">var win:*;
win = new loginPanel();
//弹出显示登录框
PopUpManager.addPopUp(win,this,true);
//登陆框显示在中间
PopUpManager.centerPopUp(win); </span></pre>
<p><span style="font-size: small;">&nbsp;<strong>⑵在第二种方法中利用state来改变显示的界面则要相对复杂许多.</strong></span></p>
<p><strong><span style="font-size: small;">①首先我们需要自定义统一的状态事件名称</span></strong></p>
<div>
<div>
<div>Java代码 <embed src="http://halzhang.javaeye.com/javascripts/syntaxhighlighter/clipboard_new.swf" flashvars="clipboard=%3Cspan%20style%3D%22font-size%3A%20small%3B%22%3Epackage%20note.events%7B%0A%2F**%0A%20*%20%E7%8A%B6%E6%80%81%E4%BA%8B%E4%BB%B6%2C%E6%AF%8F%E4%B8%AA%E7%8A%B6%E6%80%81%E5%80%BC%E8%A6%81%E5%92%8C%E7%8A%B6%E6%80%81%E5%90%8D%E7%A7%B0%E4%B8%80%E6%A0%B7%0A%20*%20%40author%20halzhang%0A*%2F%0Apublic%20class%20StateEvent%7B%0A%20%20%20%20%20%20%20%20%20%20public%20static%20const%20NULL_STATE%3AString%20%3D%20%22%22%3B%0A%20%20%20%20%20%20%20%20%20%20public%20static%20const%20LOGIN_STATE%3AString%20%3D%20%22loginState%22%3B%0A%20%20%20%20%20%20%20%20%20%20public%20static%20const%20ADDNOTE_STATE%3AString%20%3D%20%22addNoteState%22%3B%0A%20%20%20%20%20%20%20%20%20%20public%20static%20const%20ADDUSER_STATE%3AString%20%3D%20%22addUserState%22%3B%0A%20%20%20%20%20%20%20%20%20%20public%20static%20const%20LISTALLUSER_STATE%3AString%20%3D%20%22listAllUserState%22%3B%0A%20%20%20%20%20%20%20%20%20%7D%0A%7D%3C%2Fspan%3E" quality="high" allowscriptaccess="always" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" width="14" height="15"></div>
</div>
<ol start="1">
    <li>&lt;span&nbsp;style="font-size:&nbsp;small;"&gt;package&nbsp;note.events{&nbsp;&nbsp;</li>
    <li>/**&nbsp;</li>
    <li>&nbsp;*&nbsp;状态事件,每个状态值要和状态名称一样&nbsp;</li>
    <li>&nbsp;*&nbsp;@author&nbsp;halzhang&nbsp;</li>
    <li>*/&nbsp;&nbsp;</li>
    <li>public&nbsp;class&nbsp;StateEvent{&nbsp;&nbsp;</li>
    <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;static&nbsp;const&nbsp;NULL_STATE:String&nbsp;=&nbsp;"";&nbsp;&nbsp;</li>
    <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;static&nbsp;const&nbsp;LOGIN_STATE:String&nbsp;=&nbsp;"loginState";&nbsp;&nbsp;</li>
    <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;static&nbsp;const&nbsp;ADDNOTE_STATE:String&nbsp;=&nbsp;"addNoteState";&nbsp;&nbsp;</li>
    <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;static&nbsp;const&nbsp;ADDUSER_STATE:String&nbsp;=&nbsp;"addUserState";&nbsp;&nbsp;</li>
    <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;static&nbsp;const&nbsp;LISTALLUSER_STATE:String&nbsp;=&nbsp;"listAllUserState";&nbsp;&nbsp;</li>
    <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</li>
    <li>}&lt;/span&gt;&nbsp;&nbsp;</li>
</ol>
</div>
<pre style="display: none;" name="code" class="java"><span style="font-size: small;">package note.events{
/**
* 状态事件,每个状态值要和状态名称一样
* @author halzhang
*/
public class StateEvent{
public static const NULL_STATE:String = "";
public static const LOGIN_STATE:String = "loginState";
public static const ADDNOTE_STATE:String = "addNoteState";
public static const ADDUSER_STATE:String = "addUserState";
public static const LISTALLUSER_STATE:String = "listAllUserState";
}
}</span></pre>
<p><span style="font-size: small;">&nbsp;<strong>②在Flex项目的主程序中定义state,当然也可以加上状态切换的动画.</strong></span></p>
<div>
<div>
<div>Html代码 <embed src="http://halzhang.javaeye.com/javascripts/syntaxhighlighter/clipboard_new.swf" flashvars="clipboard=%3Cspan%20style%3D%22font-size%3A%20small%3B%22%3E%3C!--%20%E5%AE%9A%E4%B9%89%E7%8A%B6%E6%80%81%2C%E6%88%91%E4%BB%AC%E5%88%86%E5%88%AB%E5%AE%9A%E4%B9%89%E4%BA%86%E4%B8%89%E4%B8%AA%E7%8A%B6%E6%80%81%2C%E6%AF%8F%E4%B8%AA%E7%8A%B6%E6%80%81%E5%AF%B9%E5%BA%94%E4%B8%80%E4%B8%AA%E8%87%AA%E5%AE%9A%E4%B9%89%E7%9A%84%E5%8F%AF%E8%A7%86%E5%8C%96%E7%BB%84%E4%BB%B6%20%20--%3E%0A%09%3Cmx%3Astates%3E%0A%09%09%3Cmx%3AState%20name%3D%22loginState%22%3E%0A%09%09%09%3Cmx%3AAddChild%20position%3D%22lastChild%22%3E%0A%09%09%09%09%3C!--%20%E7%8A%B6%E6%80%81%E5%AF%B9%E5%BA%94%E7%9A%84%E8%87%AA%E5%AE%9A%E4%B9%89%E7%BB%84%E4%BB%B6%3A%E7%99%BB%E9%99%86%E7%BB%84%E4%BB%B6%20--%3E%0A%09%09%09%09%3Cview%3AloginPanel%20id%3D%22panel_login%22%20x%3D%22195%22%20y%3D%2289%22%2F%3E%0A%09%09%09%3C%2Fmx%3AAddChild%3E%0A%09%09%3C%2Fmx%3AState%3E%0A%09%09%0A%09%09%3Cmx%3AState%20name%3D%22addNoteState%22%3E%0A%09%09%09%3Cmx%3AAddChild%20position%3D%22lastChild%22%3E%0A%09%09%09%09%3C!--%20%E7%8A%B6%E6%80%81%E5%AF%B9%E5%BA%94%E7%9A%84%E8%87%AA%E5%AE%9A%E4%B9%89%E7%BB%84%E4%BB%B6%3A%E6%B7%BB%E5%8A%A0%E7%95%99%E8%A8%80%E7%BB%84%E4%BB%B6%20--%3E%0A%09%09%09%09%3Cview%3AaddNotePanel%20id%3D%22panel_addNote%22%20x%3D%2210%22%20y%3D%2244%22%2F%3E%0A%09%09%09%3C%2Fmx%3AAddChild%3E%0A%09%09%3C%2Fmx%3AState%3E%0A%09%09%0A%09%09%3Cmx%3AState%20name%3D%22addUserState%22%3E%0A%09%09%09%3Cmx%3AAddChild%20position%3D%22lastChild%22%3E%0A%09%09%09%09%3C!--%20%E7%8A%B6%E6%80%81%E5%AF%B9%E5%BA%94%E7%9A%84%E8%87%AA%E5%AE%9A%E4%B9%89%E7%BB%84%E4%BB%B6%3A%E6%B7%BB%E5%8A%A0%E7%94%A8%E6%88%B7%E7%BB%84%E4%BB%B6%20--%3E%0A%09%09%09%09%3Cview%3AaddUserPanel%20id%3D%22panel_addUser%22%20x%3D%2210%22%20y%3D%2244%22%2F%3E%0A%09%09%09%3C%2Fmx%3AAddChild%3E%0A%09%09%3C%2Fmx%3AState%3E%0A%09%09%0A%09%09%3Cmx%3AState%20name%3D%22listAllUserState%22%3E%0A%09%09%09%3Cmx%3AAddChild%20position%3D%22lastChild%22%3E%0A%09%09%09%09%3Cview%3AallUserPanel%20id%3D%22panel_allUser%22%20x%3D%2210%22%20y%3D%2244%22%2F%3E%0A%09%09%09%3C%2Fmx%3AAddChild%3E%0A%09%09%3C%2Fmx%3AState%3E%0A%09%3C%2Fmx%3Astates%3E%3C%2Fspan%3E" quality="high" allowscriptaccess="always" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" width="14" height="15"></div>
</div>
<ol start="1">
    <li>&lt;span&nbsp;style="font-size:&nbsp;small;"&gt;&lt;!--&nbsp;定义状态,我们分别定义了三个状态,每个状态对应一个自定义的可视化组件&nbsp;&nbsp;--&gt;&nbsp;&nbsp;</li>
    <li>&nbsp;&nbsp;&nbsp;&nbsp;&lt;mx:states&gt;&nbsp;&nbsp;</li>
    <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;mx:State&nbsp;name="loginState"&gt;&nbsp;&nbsp;</li>
    <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;mx:AddChild&nbsp;position="lastChild"&gt;&nbsp;&nbsp;</li>
    <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;!--&nbsp;状态对应的自定义组件:登陆组件&nbsp;--&gt;&nbsp;&nbsp;</li>
    <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;view:loginPanel&nbsp;id="panel_login"&nbsp;x="195"&nbsp;y="89"/&gt;&nbsp;&nbsp;</li>
    <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/mx:AddChild&gt;&nbsp;&nbsp;</li>
    <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/mx:State&gt;&nbsp;&nbsp;</li>
    <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</li>
    <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;mx:State&nbsp;name="addNoteState"&gt;&nbsp;&nbsp;</li>
    <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;mx:AddChild&nbsp;position="lastChild"&gt;&nbsp;&nbsp;</li>
    <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;!--&nbsp;状态对应的自定义组件:添加留言组件&nbsp;--&gt;&nbsp;&nbsp;</li>
    <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;view:addNotePanel&nbsp;id="panel_addNote"&nbsp;x="10"&nbsp;y="44"/&gt;&nbsp;&nbsp;</li>
    <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/mx:AddChild&gt;&nbsp;&nbsp;</li>
    <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/mx:State&gt;&nbsp;&nbsp;</li>
    <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</li>
    <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;mx:State&nbsp;name="addUserState"&gt;&nbsp;&nbsp;</li>
    <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;mx:AddChild&nbsp;position="lastChild"&gt;&nbsp;&nbsp;</li>
    <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;!--&nbsp;状态对应的自定义组件:添加用户组件&nbsp;--&gt;&nbsp;&nbsp;</li>
    <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;view:addUserPanel&nbsp;id="panel_addUser"&nbsp;x="10"&nbsp;y="44"/&gt;&nbsp;&nbsp;</li>
    <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/mx:AddChild&gt;&nbsp;&nbsp;</li>
    <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/mx:State&gt;&nbsp;&nbsp;</li>
    <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</li>
    <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;mx:State&nbsp;name="listAllUserState"&gt;&nbsp;&nbsp;</li>
    <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;mx:AddChild&nbsp;position="lastChild"&gt;&nbsp;&nbsp;</li>
    <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;view:allUserPanel&nbsp;id="panel_allUser"&nbsp;x="10"&nbsp;y="44"/&gt;&nbsp;&nbsp;</li>
    <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/mx:AddChild&gt;&nbsp;&nbsp;</li>
    <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/mx:State&gt;&nbsp;&nbsp;</li>
    <li>&nbsp;&nbsp;&nbsp;&nbsp;&lt;/mx:states&gt;&lt;/span&gt;&nbsp;&nbsp;</li>
</ol>
</div>
<pre style="display: none;" name="code" class="html"><span style="font-size: small;">&lt;!-- 定义状态,我们分别定义了三个状态,每个状态对应一个自定义的可视化组件  --&gt;
&lt;mx:states&gt;
&lt;mx:State name="loginState"&gt;
&lt;mx:AddChild position="lastChild"&gt;
&lt;!-- 状态对应的自定义组件:登陆组件 --&gt;
&lt;view:loginPanel id="panel_login" x="195" y="89"/&gt;
&lt;/mx:AddChild&gt;
&lt;/mx:State&gt;
&lt;mx:State name="addNoteState"&gt;
&lt;mx:AddChild position="lastChild"&gt;
&lt;!-- 状态对应的自定义组件:添加留言组件 --&gt;
&lt;view:addNotePanel id="panel_addNote" x="10" y="44"/&gt;
&lt;/mx:AddChild&gt;
&lt;/mx:State&gt;
&lt;mx:State name="addUserState"&gt;
&lt;mx:AddChild position="lastChild"&gt;
&lt;!-- 状态对应的自定义组件:添加用户组件 --&gt;
&lt;view:addUserPanel id="panel_addUser" x="10" y="44"/&gt;
&lt;/mx:AddChild&gt;
&lt;/mx:State&gt;
&lt;mx:State name="listAllUserState"&gt;
&lt;mx:AddChild position="lastChild"&gt;
&lt;view:allUserPanel id="panel_allUser" x="10" y="44"/&gt;
&lt;/mx:AddChild&gt;
&lt;/mx:State&gt;
&lt;/mx:states&gt;</span></pre>
<p><strong><span style="font-size: small;">③在组件中派发状态事件（StateEvent）</span></strong></p>
<div>
<div>
<div>Js代码 <embed src="http://halzhang.javaeye.com/javascripts/syntaxhighlighter/clipboard_new.swf" flashvars="clipboard=%3Cspan%20style%3D%22font-size%3A%20small%3B%22%3E%20%2F%2F%E5%85%B3%E9%97%AD%E6%B7%BB%E5%8A%A0%E7%95%99%E8%A8%80%E7%BB%84%E4%BB%B6%E7%9A%84%E6%97%B6%E5%80%99%E6%B4%BE%E5%8F%91%22%E7%A9%BA%22%E7%8A%B6%E6%80%81%E4%BA%8B%E4%BB%B6%2C%E4%B9%9F%E5%B0%B1%E6%98%AF%E4%B8%BB%E7%A8%8B%E5%BA%8F%E7%95%8C%E9%9D%A2%E4%B8%8D%E6%98%BE%E7%A4%BA%E5%85%B6%E4%BB%96%E7%BB%84%E4%BB%B6%20%20%20%0A%20%2F%2F%E5%A6%82%E6%9E%9C%E6%83%B3%E6%98%BE%E7%A4%BA%E5%85%B6%E4%BB%96%E7%BB%84%E4%BB%B6%2C%E5%88%99%E6%B4%BE%E5%8F%91%E7%9B%B8%E5%BA%94%E7%9A%84%E7%8A%B6%E6%80%81%E4%BA%8B%E4%BB%B6%20%20%20%0A%20internal%20function%20closeMySelf()%3Avoid%7B%20%20%0A%20%20%20%20%20%20%20%20appModel.dispatchEvent(new%20Even(StateEvent.NULL_STATE))%3B%20%20%0A%20%7D%3C%2Fspan%3E" quality="high" allowscriptaccess="always" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" width="14" height="15"></div>
</div>
<ol start="1">
    <li>&lt;span&nbsp;style="font-size:&nbsp;small;"&gt;&nbsp;//关闭添加留言组件的时候派发"空"状态事件,也就是主程序界面不显示其他组件&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</li>
    <li>&nbsp;//如果想显示其他组件,则派发相应的状态事件&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</li>
    <li>&nbsp;internal&nbsp;function&nbsp;closeMySelf():void{&nbsp;&nbsp;&nbsp;&nbsp;</li>
    <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;appModel.dispatchEvent(new&nbsp;Even(StateEvent.NULL_STATE));&nbsp;&nbsp;&nbsp;&nbsp;</li>
    <li>&nbsp;}&lt;/span&gt;&nbsp;&nbsp;</li>
</ol>
</div>
<pre style="display: none;" name="code" class="js"><span style="font-size: small;"> //关闭添加留言组件的时候派发"空"状态事件,也就是主程序界面不显示其他组件
//如果想显示其他组件,则派发相应的状态事件
internal function closeMySelf():void{
appModel.dispatchEvent(new Even(StateEvent.NULL_STATE));
}</span></pre>
<p><strong><span style="font-size: small;">④在主程序界面中监听状态事件(StateEvent),从而通过改变状态来显示我们需要的组件.</span></strong></p>
<div>
<div>
<div>Js代码 <embed src="http://halzhang.javaeye.com/javascripts/syntaxhighlighter/clipboard_new.swf" flashvars="clipboard=%3Cspan%20style%3D%22font-size%3A%20small%3B%22%3E%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%E6%B7%BB%E5%8A%A0%E7%8A%B6%E6%80%81%E4%BA%8B%E4%BB%B6%E7%9B%91%E5%90%AC%2C%E5%9C%A8%E7%A8%8B%E5%BA%8F%E5%88%9D%E5%A7%8B%E5%8C%96%E7%9A%84%E6%97%B6%E5%80%99%E6%89%A7%E8%A1%8C%0A%09%09%09internal%20function%20stateListener()%3Avoid%7B%0A%09%09%09%09appModel.addEventListener(StateEvent.NULL_STATE%2CstateEventHandler)%3B%0A%09%09%09%09appModel.addEventListener(StateEvent.LOGIN_STATE%2CstateEventHandler)%3B%0A%09%09%09%09appModel.addEventListener(StateEvent.ADDNOTE_STATE%2CstateEventHandler)%3B%0A%09%09%09%7D%0A%09%09%09%2F%2F%E7%8A%B6%E6%80%81%E4%BA%8B%E4%BB%B6%E5%A4%84%E7%90%86%E5%87%BD%E6%95%B0%0A%09%09%09internal%20function%20stateEventHandler(evt%3AEvent)%3Avoid%7B%0A%09%09%09%09this.currentState%20%3D%20evt.type.toString()%3B%0A%09%09%09%7D%3C%2Fspan%3E" quality="high" allowscriptaccess="always" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" width="14" height="15"></div>
</div>
<ol start="1">
    <li>&lt;span&nbsp;style="font-size:&nbsp;small;"&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//添加状态事件监听,在程序初始化的时候执行&nbsp;&nbsp;</li>
    <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;internal&nbsp;function&nbsp;stateListener():void{&nbsp;&nbsp;</li>
    <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;appModel.addEventListener(StateEvent.NULL_STATE,stateEventHandler);&nbsp;&nbsp;</li>
    <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;appModel.addEventListener(StateEvent.LOGIN_STATE,stateEventHandler);&nbsp;&nbsp;</li>
    <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;appModel.addEventListener(StateEvent.ADDNOTE_STATE,stateEventHandler);&nbsp;&nbsp;</li>
    <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</li>
    <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//状态事件处理函数&nbsp;&nbsp;</li>
    <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;internal&nbsp;function&nbsp;stateEventHandler(evt:Event):void{&nbsp;&nbsp;</li>
    <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.currentState&nbsp;=&nbsp;evt.type.toString();&nbsp;&nbsp;</li>
    <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&lt;/span&gt;&nbsp;&nbsp;</li>
</ol>
</div>
<pre style="display: none;" name="code" class="js"><span style="font-size: small;">                                                //添加状态事件监听,在程序初始化的时候执行
internal function stateListener():void{
appModel.addEventListener(StateEvent.NULL_STATE,stateEventHandler);
appModel.addEventListener(StateEvent.LOGIN_STATE,stateEventHandler);
appModel.addEventListener(StateEvent.ADDNOTE_STATE,stateEventHandler);
}
//状态事件处理函数
internal function stateEventHandler(evt:Event):void{
this.currentState = evt.type.toString();
}</span></pre>
<p><span><span style="font-size: small;"><strong>在项目中appModel是一个继承
EventDispatcher,使用单例模式实现的程序模型.不知道读者是否发现StateEvent中事件名称是和主程序界面中定义的state的
name值是一致的.因为这样定义我们就可以使用统一的状态事件处理函数,就不需要先去判断是哪个状态事件,在来改变当前状态.只要简单的执行</strong> <span style="color: #ff0000;"><strong>this.currentState = evt.type.toString();</strong> </span></span></span></p>
<img src ="http://www.blogjava.net/zhaijianhui/aggbug/294633.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhaijianhui/" target="_blank">蜘蛛</a> 2009-09-10 17:50 <a href="http://www.blogjava.net/zhaijianhui/archive/2009/09/10/294633.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Flex3 CookBook </title><link>http://www.blogjava.net/zhaijianhui/archive/2009/08/24/292320.html</link><dc:creator>蜘蛛</dc:creator><author>蜘蛛</author><pubDate>Sun, 23 Aug 2009 22:31:00 GMT</pubDate><guid>http://www.blogjava.net/zhaijianhui/archive/2009/08/24/292320.html</guid><wfw:comment>http://www.blogjava.net/zhaijianhui/comments/292320.html</wfw:comment><comments>http://www.blogjava.net/zhaijianhui/archive/2009/08/24/292320.html#Feedback</comments><slash:comments>7</slash:comments><wfw:commentRss>http://www.blogjava.net/zhaijianhui/comments/commentRss/292320.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhaijianhui/services/trackbacks/292320.html</trackback:ping><description><![CDATA[http://blog.csdn.net/lixinye0123
<img src ="http://www.blogjava.net/zhaijianhui/aggbug/292320.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhaijianhui/" target="_blank">蜘蛛</a> 2009-08-24 06:31 <a href="http://www.blogjava.net/zhaijianhui/archive/2009/08/24/292320.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>