﻿<?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>IT博客-真才实料才是最真-文章分类-FLEX</title><link>http://www.cnitblog.com/gavinkin555/category/6035.html</link><description>Dream have no limit</description><language>zh-cn</language><lastBuildDate>Wed, 28 Sep 2011 20:20:13 GMT</lastBuildDate><pubDate>Wed, 28 Sep 2011 20:20:13 GMT</pubDate><ttl>60</ttl><item><title>AS3应用程序模块化开发与ApplicationDomain</title><link>http://www.cnitblog.com/gavinkin555/articles/33630.html</link><dc:creator>gavinkin555</dc:creator><author>gavinkin555</author><pubDate>Tue, 18 Sep 2007 02:14:00 GMT</pubDate><guid>http://www.cnitblog.com/gavinkin555/articles/33630.html</guid><wfw:comment>http://www.cnitblog.com/gavinkin555/comments/33630.html</wfw:comment><comments>http://www.cnitblog.com/gavinkin555/articles/33630.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/gavinkin555/comments/commentRss/33630.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/gavinkin555/services/trackbacks/33630.html</trackback:ping><description><![CDATA[当程序越来越大，我们需要把它拆分成多个swf，在需要的时候动态加载。拆分时应该尽量把不同的类编译进唯一的swf，避免因swf文件增多而使整个程序的文件尺寸增大。按此原则可以拆分出以下两种swf，借助 ApplicationDomain 共享其代码和资源。
<ul>
    <li><strong>模块(Module)</strong><br>按照程序逻辑，可以拆分出多个&#8220;功能模块&#8221;，如&#8220;注册&#8221;、&#8220;管理&#8221;等等；按照游戏或社区类程序的关卡或场景，可以拆分出不同的&#8220;场景模块&#8221;。这些模块不是主程序运行必须的，只在需要的时候加载。
    <li><strong>运行时共享库(RSL)</strong><br>主场景或者多个模块通用的资源，比如位图、声音、设计好的页面元素等，可作为&#8220;库&#8221;在主程序运行前加载。可以整套更换的皮肤(skin)只需先加载一套。 </li>
</ul>
<p><span id=more-445></span>　　ApplicationDomain 是存放AS3定义(包括类、方法、接口等)的容器。使用Loader类加载swf时可以通过指定 ApplicationDomain 参数将swf加载到不同的域(Domain)：</p>
<div class=hl-surround>
<div class=hl-main><span style="COLOR: green">var</span><span style="COLOR: gray"> </span><span style="COLOR: blue">loader</span><span style="COLOR: gray"> : </span><span style="COLOR: blue">Loader</span><span style="COLOR: gray"> = </span><span style="COLOR: green">new</span><span style="COLOR: gray"> </span><span style="COLOR: blue">Loader</span><span style="COLOR: olive">()</span><span style="COLOR: gray">;<br></span><span style="COLOR: green">var</span><span style="COLOR: gray"> </span><span style="COLOR: blue">context</span><span style="COLOR: gray"> : </span><span style="COLOR: blue">LoaderContext</span><span style="COLOR: gray"> = </span><span style="COLOR: green">new</span><span style="COLOR: gray"> </span><span style="COLOR: blue">LoaderContext</span><span style="COLOR: olive">()</span><span style="COLOR: gray">;<br></span><span style="COLOR: #ffa500">/* 加载到子域(模块) */</span><span style="COLOR: gray"><br></span><span style="COLOR: blue">context</span><span style="COLOR: gray">.</span><span style="COLOR: blue">applicationDomain</span><span style="COLOR: gray"> = </span><span style="COLOR: green">new</span><span style="COLOR: gray"> </span><span style="COLOR: blue">ApplicationDomain</span><span style="COLOR: olive">(</span><span style="COLOR: blue">ApplicationDomain</span><span style="COLOR: gray">.</span><span style="COLOR: blue">currentDomain</span><span style="COLOR: olive">)</span><span style="COLOR: gray">;<br></span><span style="COLOR: #ffa500">/* 加载到同域(共享库) */</span><span style="COLOR: gray"><br></span><span style="COLOR: blue">context</span><span style="COLOR: gray">.</span><span style="COLOR: blue">applicationDomain</span><span style="COLOR: gray"> = </span><span style="COLOR: blue">ApplicationDomain</span><span style="COLOR: gray">.</span><span style="COLOR: blue">currentDomain</span><span style="COLOR: gray">;<br></span><span style="COLOR: #ffa500">/* 加载到新域(独立运行的程序或模块) */</span><span style="COLOR: gray"><br></span><span style="COLOR: blue">context</span><span style="COLOR: gray">.</span><span style="COLOR: blue">applicationDomain</span><span style="COLOR: gray"> = </span><span style="COLOR: green">new</span><span style="COLOR: gray"> </span><span style="COLOR: blue">ApplicationDomain</span><span style="COLOR: olive">()</span><span style="COLOR: gray">;<br></span><span style="COLOR: blue">loader</span><span style="COLOR: gray">.</span><span style="COLOR: teal">load</span><span style="COLOR: olive">(</span><span style="COLOR: green">new</span><span style="COLOR: gray"> </span><span style="COLOR: blue">URLRequest</span><span style="COLOR: olive">(</span><span style="COLOR: #8b0000">"</span><span style="COLOR: red">loaded.swf</span><span style="COLOR: #8b0000">"</span><span style="COLOR: olive">)</span><span style="COLOR: gray">, </span><span style="COLOR: blue">context</span><span style="COLOR: olive">)</span><span style="COLOR: gray">;</span></div>
</div>
<p>　　ApplicationDomain使用类似于显示列表(DisplayList)的树形结构。 相对于舞台(Stage) ，可以认为 ApplicationDomain 最根部的是系统域(system domain)，包含 Flash Player 核心类定义。主程序所在的域(以下简称主域)就是它唯一的子域，类似于Stage下的文档类(Document Class)。<br>　　一个fla文档类里代码：</p>
<div class=hl-surround>
<div class=hl-main><span style="COLOR: green">this</span><span style="COLOR: gray">.</span><span style="COLOR: blue">stage</span><span style="COLOR: gray">.</span><span style="COLOR: blue">addChild</span><span style="COLOR: olive">(</span><span style="COLOR: blue">mySprite</span><span style="COLOR: olive">)</span><span style="COLOR: gray">;<br></span><span style="COLOR: green">this</span><span style="COLOR: gray">.</span><span style="COLOR: blue">addChild</span><span style="COLOR: olive">(</span><span style="COLOR: blue">myMC</span><span style="COLOR: olive">)</span><span style="COLOR: gray">;<br></span><span style="COLOR: green">this</span><span style="COLOR: gray">.</span><span style="COLOR: blue">addChild</span><span style="COLOR: olive">(</span><span style="COLOR: blue">myShape</span><span style="COLOR: olive">)</span><span style="COLOR: gray">;</span></div>
</div>
<p>　　运行后的显示列表：<br><img alt=01.gif src="http://eidiot.net/wp-content/uploads/2007/06/01.gif"><br>　　ApplicationDomain 的类似结构：<br><img alt=02.gif src="http://eidiot.net/wp-content/uploads/2007/06/02.gif"></p>
<ul>
    <li><strong>加载到子域(模块)</strong><br>类似于&#8220;继承&#8221;，子域可以直接获得父域所有的类定义，反之父域得不到子域的。和继承关系不同的是，如果子域中有和父域同名的类，子域定义会被忽略而使用父域的定义。
    <li><strong>加载到同域(运行时共享库)</strong><br>类似集合里的合并关系。被加载swf里的所有类定义被合并到当前域中可以直接使用。和加载到子域相同，和当前域同名的定义也会被忽略。
    <li><strong>加载到新域(独立运行的程序或模块)</strong><br>swf载入指定域之前，先要检查该域及其父域中是否存在同名类，重复定义一概忽略。如果加载别人写的程序，或者使用旧版本的主程序加载新版本的模块，为避免类名冲突就要加载到新域独立运行以使用自己的类。 </li>
</ul>
<p>　　模块加载到同域不是一样可以吗？为何要加载到子域呢？好处就在于，卸载一个加载到子域的模块时，只要确保清除所有到该模块的引用，模块的所有类定义将被垃圾回收(Garbage Collection)。<br>　　有两种方式可以访问 ApplicationDomain :</p>
<ul>
    <li><strong>ApplicationDomain.currentDomain</strong><br>currentDomain是ApplicationDomain的静态变量，表示<strong>当前代码</strong>所在的域。该变量很奇特，在主程序里指向主域，在加载到子域的模块里则指向该模块所在的子域。虽然 ApplicationDomain 有个 parentDomain 属性，但子域已经自动获得了父域的类定义，所以通过 ApplicationDomain.currentDomain 就可以获取父域定义了——包括主程序和加载到主域的共享库。(注：系统域不可直接访问，主域和所有新域即系统域子域的parentDomain属性为null)
    <li><strong>LoaderInfo类的applicationDomain属性</strong><br>此方式可以访问任何方式加载的swf的 ApplicationDomain。对于主程序来说，加载到同域的库定义已经存在于 ApplicationDomain.currentDomain ，而模块的类主程序一般用不到。所以这种方式个人不推荐使用。 </li>
</ul>
<p>　　ApplicationDomain 的 hasDefinition() 方法判断某定义是否存在，getDefinition() 方法获取指定的定义。下面以一个 <a class=liinternal href="http://eidiot.net/lessons/appdomain/demo/" target=_blank><u><font color=#0000ff>例子</font></u></a> 来介绍 ApplicationDomain 的具体用法和应用程序的拆分。<br>　　<a class=liinternal href="http://eidiot.net/lessons/appdomain/demo/" target=_blank><u><font color=#0000ff>本例</font></u></a> 有四个swf，shell.swf是主程序，lib.swf是共享库，login.swf和result.swf分别是&#8220;登录&#8221;和&#8220;结果&#8221;模块，所有的视图元件都在共享库中。实际开发时可能有很多库，比如&#8220;位图库&#8221;、&#8220;音效库&#8221;、&#8220;模型通用库&#8221;等。&#8220;通用库&#8221;里存放多个模块共用的资源，比如此例中的背景元素。而各个模块独有的资源还是放在各自的swf中。<br>　　主程序首先将共享库加载到同域，完成后将&#8220;登录模块&#8221;加载到子域。主程序可以像操作普通的视觉对象(DisplayObject)一样操作加载的模块：监听事件、调用方法。因为编译器不会识别未定义的类，为使用强类型，建议为主类和模型定义相应的接口，使用少量的重复代码协助编程。</p>
<div class=hl-surround>
<div class=hl-main><span style="COLOR: green">private</span><span style="COLOR: gray"> </span><span style="COLOR: green">function</span><span style="COLOR: gray"> </span><span style="COLOR: blue">showModule</span><span style="COLOR: olive">(</span><span style="COLOR: blue">p_module</span><span style="COLOR: gray"> : </span><span style="COLOR: blue">IModule</span><span style="COLOR: olive">)</span><span style="COLOR: gray"> : </span><span style="COLOR: green">void</span><span style="COLOR: gray"><br></span><span style="COLOR: olive">{</span><span style="COLOR: gray"><br>&nbsp;&nbsp; &nbsp;</span><span style="COLOR: green">if</span><span style="COLOR: gray"> </span><span style="COLOR: olive">(</span><span style="COLOR: green">this</span><span style="COLOR: gray">.</span><span style="COLOR: blue">m_moduleList</span><span style="COLOR: olive">[</span><span style="COLOR: maroon">0</span><span style="COLOR: olive">]</span><span style="COLOR: gray"> == </span><span style="COLOR: #8b0000">"</span><span style="COLOR: red">login.swf</span><span style="COLOR: #8b0000">"</span><span style="COLOR: olive">)</span><span style="COLOR: gray"><br>&nbsp;&nbsp; &nbsp;</span><span style="COLOR: olive">{</span><span style="COLOR: gray"><br>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="COLOR: blue">p_module</span><span style="COLOR: gray">.</span><span style="COLOR: teal">show</span><span style="COLOR: olive">(</span><span style="COLOR: green">this</span><span style="COLOR: olive">)</span><span style="COLOR: gray">;<br>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="COLOR: blue">p_module</span><span style="COLOR: gray">.</span><span style="COLOR: blue">addEventListener</span><span style="COLOR: olive">(</span><span style="COLOR: #8b0000">"</span><span style="COLOR: red">login</span><span style="COLOR: #8b0000">"</span><span style="COLOR: gray">, </span><span style="COLOR: green">this</span><span style="COLOR: gray">.</span><span style="COLOR: blue">onLogin</span><span style="COLOR: olive">)</span><span style="COLOR: gray">;<br>&nbsp;&nbsp; &nbsp;</span><span style="COLOR: olive">}</span><span style="COLOR: gray"> </span><span style="COLOR: green">else</span><span style="COLOR: gray"><br>&nbsp;&nbsp; &nbsp;</span><span style="COLOR: olive">{</span><span style="COLOR: gray"><br>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="COLOR: blue">p_module</span><span style="COLOR: gray">.</span><span style="COLOR: teal">show</span><span style="COLOR: olive">(</span><span style="COLOR: green">this</span><span style="COLOR: gray">, </span><span style="COLOR: green">this</span><span style="COLOR: gray">.</span><span style="COLOR: blue">m_userName</span><span style="COLOR: olive">)</span><span style="COLOR: gray">;<br>&nbsp;&nbsp; &nbsp;</span><span style="COLOR: olive">}</span><span style="COLOR: gray"><br></span><span style="COLOR: olive">}</span></div>
</div>
<p>　　模块&#8220;继承&#8221;了主程序和共享库的所有类和资源，可以通过 ApplicationDomain.currentDomain.getDefinition() 来获取相应的类。注意获取不存在的类会抛出一个 ReferenceError。</p>
<div class=hl-surround>
<div class=hl-main><span style="COLOR: blue">protected</span><span style="COLOR: gray"> </span><span style="COLOR: green">function</span><span style="COLOR: gray"> </span><span style="COLOR: blue">getClass</span><span style="COLOR: olive">(</span><span style="COLOR: blue">p_name</span><span style="COLOR: gray"> : </span><span style="COLOR: teal">String</span><span style="COLOR: olive">)</span><span style="COLOR: gray"> : </span><span style="COLOR: blue">Class</span><span style="COLOR: gray"><br></span><span style="COLOR: olive">{</span><span style="COLOR: gray"><br>&nbsp;&nbsp; &nbsp;</span><span style="COLOR: green">try</span><span style="COLOR: gray"><br>&nbsp;&nbsp; &nbsp;</span><span style="COLOR: olive">{</span><span style="COLOR: gray"><br>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="COLOR: green">return</span><span style="COLOR: gray"> </span><span style="COLOR: blue">ApplicationDomain</span><span style="COLOR: gray">.</span><span style="COLOR: blue">currentDomain</span><span style="COLOR: gray">.</span><span style="COLOR: blue">getDefinition</span><span style="COLOR: olive">(</span><span style="COLOR: blue">p_name</span><span style="COLOR: olive">)</span><span style="COLOR: gray"> </span><span style="COLOR: blue">as</span><span style="COLOR: gray"> </span><span style="COLOR: blue">Class</span><span style="COLOR: gray">;<br>&nbsp;&nbsp; &nbsp;</span><span style="COLOR: olive">}</span><span style="COLOR: gray"> </span><span style="COLOR: green">catch</span><span style="COLOR: gray"> </span><span style="COLOR: olive">(</span><span style="COLOR: blue">p_e</span><span style="COLOR: gray"> : </span><span style="COLOR: blue">ReferenceError</span><span style="COLOR: olive">)</span><span style="COLOR: gray"><br>&nbsp;&nbsp; &nbsp;</span><span style="COLOR: olive">{</span><span style="COLOR: gray"><br>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="COLOR: teal">trace</span><span style="COLOR: olive">(</span><span style="COLOR: #8b0000">"</span><span style="COLOR: red">定义 </span><span style="COLOR: #8b0000">"</span><span style="COLOR: gray"> + </span><span style="COLOR: blue">p_name</span><span style="COLOR: gray"> + </span><span style="COLOR: #8b0000">"</span><span style="COLOR: red"> 不存在</span><span style="COLOR: #8b0000">"</span><span style="COLOR: olive">)</span><span style="COLOR: gray">;<br>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="COLOR: green">return</span><span style="COLOR: gray"> </span><span style="COLOR: green">null</span><span style="COLOR: gray">;<br>&nbsp;&nbsp; &nbsp;</span><span style="COLOR: olive">}</span><span style="COLOR: gray"><br>&nbsp;&nbsp; &nbsp;</span><span style="COLOR: green">return</span><span style="COLOR: gray"> </span><span style="COLOR: green">null</span><span style="COLOR: gray">;<br></span><span style="COLOR: olive">}</span></div>
</div>
<p>　　登录模块获取库中的界面元素，并在点击按钮后抛出事件。Event类不允许带参数，必须使用继承Event的自定义事件抛出参数。主程序可以把模块的自定义事件也编译进去(这样就增大了整个程序的文件尺寸)，或者让监听模块事件的函数接受一个Objcet参数，以获取其动态属性。</p>
<div class=hl-surround>
<div class=hl-main><span style="COLOR: green">private</span><span style="COLOR: gray"> </span><span style="COLOR: green">function</span><span style="COLOR: gray"> </span><span style="COLOR: blue">onLogin</span><span style="COLOR: olive">(</span><span style="COLOR: blue">p_e</span><span style="COLOR: gray"> : </span><span style="COLOR: teal">Object</span><span style="COLOR: olive">)</span><span style="COLOR: gray"> : </span><span style="COLOR: green">void</span><span style="COLOR: gray"><br></span><span style="COLOR: olive">{</span><span style="COLOR: gray"><br>&nbsp;&nbsp; &nbsp;</span><span style="COLOR: green">this</span><span style="COLOR: gray">.</span><span style="COLOR: blue">m_userName</span><span style="COLOR: gray"> = </span><span style="COLOR: blue">p_e</span><span style="COLOR: gray">.</span><span style="COLOR: blue">userName</span><span style="COLOR: gray">;<br>&nbsp;&nbsp; &nbsp;</span><span style="COLOR: green">var</span><span style="COLOR: gray"> </span><span style="COLOR: teal">login</span><span style="COLOR: gray"> : </span><span style="COLOR: blue">IModule</span><span style="COLOR: gray"> = </span><span style="COLOR: blue">p_e</span><span style="COLOR: gray">.</span><span style="COLOR: blue">currentTarget</span><span style="COLOR: gray">;<br>&nbsp;&nbsp; &nbsp;</span><span style="COLOR: teal">login</span><span style="COLOR: gray">.</span><span style="COLOR: blue">removeEventListener</span><span style="COLOR: olive">(</span><span style="COLOR: #8b0000">"</span><span style="COLOR: red">login</span><span style="COLOR: #8b0000">"</span><span style="COLOR: gray">, </span><span style="COLOR: green">this</span><span style="COLOR: gray">.</span><span style="COLOR: blue">onLogin</span><span style="COLOR: olive">)</span><span style="COLOR: gray">;<br>&nbsp;&nbsp; &nbsp;</span><span style="COLOR: teal">login</span><span style="COLOR: gray">.</span><span style="COLOR: teal">dispose</span><span style="COLOR: olive">()</span><span style="COLOR: gray">;<br>&nbsp;&nbsp; &nbsp;</span><span style="COLOR: green">this</span><span style="COLOR: gray">.</span><span style="COLOR: blue">loadSwf</span><span style="COLOR: olive">()</span><span style="COLOR: gray">;<br></span><span style="COLOR: olive">}</span></div>
</div>
<p>　　主程序收到事件之后卸载注册模块，加载&#8220;结果模块&#8221;到子域，并将登录模块传出的&#8221;userName&#8221;参数传给结果模块。</p>
<div class=hl-surround>
<div class=hl-main><span style="COLOR: green">public</span><span style="COLOR: gray"> </span><span style="COLOR: green">function</span><span style="COLOR: gray"> </span><span style="COLOR: teal">show</span><span style="COLOR: olive">(</span><span style="COLOR: blue">p_parent</span><span style="COLOR: gray"> : </span><span style="COLOR: blue">DisplayObjectContainer</span><span style="COLOR: gray">, ... </span><span style="COLOR: blue">rest</span><span style="COLOR: olive">)</span><span style="COLOR: gray"> : </span><span style="COLOR: green">void</span><span style="COLOR: gray"><br></span><span style="COLOR: olive">{</span><span style="COLOR: gray"><br>&nbsp;&nbsp; &nbsp;</span><span style="COLOR: green">var</span><span style="COLOR: gray"> </span><span style="COLOR: blue">libClass</span><span style="COLOR: gray"> : </span><span style="COLOR: blue">Class</span><span style="COLOR: gray"> = </span><span style="COLOR: green">this</span><span style="COLOR: gray">.</span><span style="COLOR: blue">getClass</span><span style="COLOR: olive">(</span><span style="COLOR: #8b0000">"</span><span style="COLOR: red">net.eidiot.appDomainDemo.Libaray</span><span style="COLOR: #8b0000">"</span><span style="COLOR: olive">)</span><span style="COLOR: gray">;<br>&nbsp;&nbsp; &nbsp;</span><span style="COLOR: green">if</span><span style="COLOR: gray"> </span><span style="COLOR: olive">(</span><span style="COLOR: blue">libClass</span><span style="COLOR: gray"> != </span><span style="COLOR: green">null</span><span style="COLOR: olive">)</span><span style="COLOR: gray"> </span><span style="COLOR: green">this</span><span style="COLOR: gray">.</span><span style="COLOR: blue">initUi</span><span style="COLOR: olive">(</span><span style="COLOR: blue">libClass</span><span style="COLOR: gray">, </span><span style="COLOR: blue">rest</span><span style="COLOR: olive">)</span><span style="COLOR: gray">;<br></span><span style="COLOR: olive">}</span><span style="COLOR: gray"><br></span><span style="COLOR: blue">override</span><span style="COLOR: gray"> </span><span style="COLOR: blue">protected</span><span style="COLOR: gray"> </span><span style="COLOR: green">function</span><span style="COLOR: gray"> </span><span style="COLOR: blue">initUi</span><span style="COLOR: olive">(</span><span style="COLOR: blue">p_libClass</span><span style="COLOR: gray"> : </span><span style="COLOR: blue">Class</span><span style="COLOR: gray">, </span><span style="COLOR: blue">p_rest</span><span style="COLOR: gray"> : </span><span style="COLOR: teal">Array</span><span style="COLOR: gray"> = </span><span style="COLOR: green">null</span><span style="COLOR: olive">)</span><span style="COLOR: gray"> : </span><span style="COLOR: green">void</span><span style="COLOR: gray"><br></span><span style="COLOR: olive">{</span><span style="COLOR: gray"><br>&nbsp;&nbsp; &nbsp;</span><span style="COLOR: green">this</span><span style="COLOR: gray">.</span><span style="COLOR: blue">addUi</span><span style="COLOR: olive">(</span><span style="COLOR: green">this</span><span style="COLOR: gray">.</span><span style="COLOR: blue">getClass</span><span style="COLOR: olive">(</span><span style="COLOR: blue">p_libClass</span><span style="COLOR: gray">.</span><span style="COLOR: blue">BG_NAME</span><span style="COLOR: olive">)</span><span style="COLOR: gray">, </span><span style="COLOR: #8b0000">"</span><span style="COLOR: red">结果</span><span style="COLOR: #8b0000">"</span><span style="COLOR: olive">)</span><span style="COLOR: gray">;<br>&nbsp;&nbsp; &nbsp;</span><span style="COLOR: green">var</span><span style="COLOR: gray"> </span><span style="COLOR: blue">resultFunc</span><span style="COLOR: gray"> : </span><span style="COLOR: teal">Function</span><span style="COLOR: gray"> = </span><span style="COLOR: blue">p_libClass</span><span style="COLOR: gray">.</span><span style="COLOR: teal">getResult</span><span style="COLOR: gray">;<br>&nbsp;&nbsp; &nbsp;</span><span style="COLOR: green">var</span><span style="COLOR: gray"> </span><span style="COLOR: blue">userName</span><span style="COLOR: gray"> : </span><span style="COLOR: teal">String</span><span style="COLOR: gray"> = </span><span style="COLOR: blue">p_rest</span><span style="COLOR: olive">[</span><span style="COLOR: maroon">0</span><span style="COLOR: olive">]</span><span style="COLOR: gray">;<br>&nbsp;&nbsp; &nbsp;</span><span style="COLOR: green">this</span><span style="COLOR: gray">.</span><span style="COLOR: blue">addChild</span><span style="COLOR: olive">(</span><span style="COLOR: blue">resultFunc</span><span style="COLOR: olive">(</span><span style="COLOR: blue">userName</span><span style="COLOR: olive">))</span><span style="COLOR: gray">;<br></span><span style="COLOR: olive">}</span></div>
</div>
<p>　　注意initUi()方法分别使用了共享库中Libaray类的静态属性BG_NAME和静态方法getResult()。但是直接调用此静态方法会报错，可以先用 resultFunc 变量取出此方法。详细内容请参考 <a class=lizip href="http://eidiot.net/lessons/appdomain/AppDomainDemo.rar" target=_blank><u><font color=#800080>源代码</font></u></a>。</p>
<img src ="http://www.cnitblog.com/gavinkin555/aggbug/33630.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/gavinkin555/" target="_blank">gavinkin555</a> 2007-09-18 10:14 <a href="http://www.cnitblog.com/gavinkin555/articles/33630.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Flex 2 DataGrid 的 Change和Click事件</title><link>http://www.cnitblog.com/gavinkin555/articles/33377.html</link><dc:creator>gavinkin555</dc:creator><author>gavinkin555</author><pubDate>Fri, 14 Sep 2007 07:25:00 GMT</pubDate><guid>http://www.cnitblog.com/gavinkin555/articles/33377.html</guid><wfw:comment>http://www.cnitblog.com/gavinkin555/comments/33377.html</wfw:comment><comments>http://www.cnitblog.com/gavinkin555/articles/33377.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/gavinkin555/comments/commentRss/33377.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/gavinkin555/services/trackbacks/33377.html</trackback:ping><description><![CDATA[在<a href="http://www.cflex.net/" target=_blank TIP=""><u><font color=#333333>CFLEX</font></u></a>上看到一则小经验，就是关于DataGrid控件的方法。如果你不想把DataGrid中的数据绑定到控件上的话，你还可以用触发事件的方式来处理。你可以使用Click事件，也可以使用Change事件，它们基本上没有分别，不过不同的是Click事件用的是event.currentTarget，而Change 则是 event.target。例如，现在我们有一个控件叫someControl，它有一个text属性，用来显示你在DataGrid中选中的信息。如果用click事件，这么写DataGrid：<br>
<p>&nbsp;</p>
<div class=UBBContent>&lt;mx:DataGrid id="DG1" click="clickHandler(event)"/&gt;</div>
<div class=UBBContent>&lt;mx:Script&gt;<br>&nbsp;&nbsp;public function clickHandler(event:MouseEvent):void<br>&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;someControl.text = <span style="COLOR: red">event.currentTarge</span>.selectedItem.someDataField;<br>&nbsp;&nbsp;}<br>&lt;/mx:Script&gt;</div>
如果用change事件，这么写DataGrid和脚本：<br>
<div class=UBBContent>&lt;mx:DataGrid id="DG2" change="changeHandler(event)"/&gt;</div>
<div class=UBBContent>&lt;mx:Script&gt;<br>&nbsp;&nbsp;public function changeHandler(event:Event):void<br>&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;someControl.text = <span style="COLOR: red">event.target</span>.selectedItem.someDataField;<br>&nbsp;&nbsp;}<br>&lt;/mx:Script&gt;</div>
<br>
<img src ="http://www.cnitblog.com/gavinkin555/aggbug/33377.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/gavinkin555/" target="_blank">gavinkin555</a> 2007-09-14 15:25 <a href="http://www.cnitblog.com/gavinkin555/articles/33377.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Flex学习进阶-使用&lt;mx:ComboBox&gt;和其他元件关联 </title><link>http://www.cnitblog.com/gavinkin555/articles/33188.html</link><dc:creator>gavinkin555</dc:creator><author>gavinkin555</author><pubDate>Mon, 10 Sep 2007 07:31:00 GMT</pubDate><guid>http://www.cnitblog.com/gavinkin555/articles/33188.html</guid><wfw:comment>http://www.cnitblog.com/gavinkin555/comments/33188.html</wfw:comment><comments>http://www.cnitblog.com/gavinkin555/articles/33188.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/gavinkin555/comments/commentRss/33188.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/gavinkin555/services/trackbacks/33188.html</trackback:ping><description><![CDATA[首先在设计模式下拖拽出需要演示效果的FLEX组件其中包括ComboBox,Button,Panel,Label 将其排列整齐，方便自己看就可以了，代码如下：<br />&lt;?xml version="1.0" encoding="utf-8"?&gt;<br />&lt;mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"&gt;<br />    &lt;mx:Panel  title="ComboBox" width="402" height="188" x="90.5" y="79" layout="absolute"&gt;<br />        &lt;mx:ComboBox id="myComboBox" width="171" x="10" y="10"&gt;<br />        &lt;/mx:ComboBox&gt;<br />        &lt;mx:Button id="myButton" label="Send"  x="200" y="10"/&gt;<br />        &lt;mx:Label id="myText" maxWidth="20"  width="244" height="23" y="60" x="10" /&gt;<br />    &lt;/mx:Panel&gt;<br />&lt;/mx:Application&gt;<br /><br />下面为添加内容并且将其改变后的值与Label属性值进行绑定<br />为ComboBox添加内容<br />        &lt;mx:ComboBox id="myComboBox" width="171" x="10" y="10"&gt;<br />            &lt;mx:dataProvider&gt;<br />                &lt;mx:Array&gt;<br />                    &lt;mx:String&gt;ComboBox1&lt;/mx:String&gt;<br />                    &lt;mx:String&gt;ComboBox2&lt;/mx:String&gt;<br />                    &lt;mx:String&gt;ComboBox3&lt;/mx:String&gt;<br />                &lt;/mx:Array&gt;<br />            &lt;/mx:dataProvider&gt;<br />        &lt;/mx:ComboBox&gt;<br />将两个进行连接：<br />&lt;mx:Label id="myText" maxWidth="20"  width="244" height="23" y="60" x="10"  <span style="FONT-WEIGHT: bold; COLOR: rgb(255,0,0)">text="{myComboBox.value}"</span>/&gt;<br />可以在这个时候发布一下看看效果。因为下面会有一些其他效果要体现。<br />有人会问到我要取的值不是ComboBox1，ComboBox2，ComboBox3怎么办，当然有方法了，需要修改String为Object,再将其data属性为你想要取出的值，改变如下：<br />            &lt;mx:dataProvider&gt;<br />                &lt;mx:Array&gt;<br /><span style="FONT-WEIGHT: bold"> <span>                   <span>&lt;mx:Object label="ComboBox1" data="1" /&gt;</span></span></span><br style="FONT-WEIGHT: bold" /><span style="FONT-WEIGHT: bold">                    &lt;mx:Object label="ComboBox2" data="2" /&gt;</span><br style="FONT-WEIGHT: bold" /><span style="FONT-WEIGHT: bold">                    &lt;mx:Object label="ComboBox3" data="3" /&gt;</span><br />                &lt;/mx:Array&gt;<br />            &lt;/mx:dataProvider&gt;<br />再次发布看看这次取的是不是data的值呀。<br />呦，我们的按钮还没有用上呢，你发现了没有，这回要用上代码了ActionScript3.0哦。给大家秀一下：<br />&lt;?xml version="1.0" encoding="utf-8"?&gt;<br />&lt;mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"&gt;<br />    <span style="FONT-WEIGHT: bold">&lt;mx:Script&gt;</span><br style="FONT-WEIGHT: bold" /><span style="FONT-WEIGHT: bold">        &lt;![CDATA[</span><br style="FONT-WEIGHT: bold" /><span style="FONT-WEIGHT: bold">            import flash.events.MouseEvent;</span><br style="FONT-WEIGHT: bold" /><span style="FONT-WEIGHT: bold"><span></span></span><br style="FONT-WEIGHT: bold" /><span style="FONT-WEIGHT: bold">            public function show(event:MouseEvent):void{</span><br style="FONT-WEIGHT: bold" /><span style="FONT-WEIGHT: bold">                myText.text = String(myComboBox.value);</span><br style="FONT-WEIGHT: bold" /><span style="FONT-WEIGHT: bold">            }</span><br style="FONT-WEIGHT: bold" /><span style="FONT-WEIGHT: bold">        ]]&gt;</span><br style="FONT-WEIGHT: bold" /><span style="FONT-WEIGHT: bold">    &lt;/mx:Script&gt;</span><br />    &lt;mx:Panel  title="ComboBox" width="402" height="188" x="90.5" y="79" layout="absolute"&gt;<br />        &lt;mx:ComboBox id="myComboBox" width="171" x="10" y="10"&gt;<br />            &lt;mx:dataProvider&gt;<br />                &lt;mx:Array&gt;<br />                    &lt;mx:Object label="ComboBox1" data="1" /&gt;<br />                    &lt;mx:Object label="ComboBox2" data="2" /&gt;<br />                    &lt;mx:Object label="ComboBox3" data="3" /&gt;<br />                &lt;/mx:Array&gt;<br />            &lt;/mx:dataProvider&gt;<br />        &lt;/mx:ComboBox&gt;<br />        &lt;mx:Button id="myButton" label="Send"  x="200" y="10" <span style="FONT-WEIGHT: bold">click="show(event);"</span>/&gt;<br />        &lt;mx:Label id="myText" maxWidth="20"  width="244" height="23" y="60" x="10" /&gt;<br />    &lt;/mx:Panel&gt;<br />&lt;/mx:Application&gt;<br /><img src ="http://www.cnitblog.com/gavinkin555/aggbug/33188.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/gavinkin555/" target="_blank">gavinkin555</a> 2007-09-10 15:31 <a href="http://www.cnitblog.com/gavinkin555/articles/33188.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>解决Flex从URL里获取参数的问题 </title><link>http://www.cnitblog.com/gavinkin555/articles/33015.html</link><dc:creator>gavinkin555</dc:creator><author>gavinkin555</author><pubDate>Wed, 05 Sep 2007 12:30:00 GMT</pubDate><guid>http://www.cnitblog.com/gavinkin555/articles/33015.html</guid><wfw:comment>http://www.cnitblog.com/gavinkin555/comments/33015.html</wfw:comment><comments>http://www.cnitblog.com/gavinkin555/articles/33015.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/gavinkin555/comments/commentRss/33015.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/gavinkin555/services/trackbacks/33015.html</trackback:ping><description><![CDATA[ 最近开始使用Flex进行开发。需要从URL中获取参数，查了好些网页也没有找到适用的方法。但最中还是找到了解决方法，现写出来，与大家分享，节省查阅的时间。 <br />    对于FLex使用参数就两个地方（我是个菜鸟，目前就知道两个） ，一个是mx：Script里，另一个就是组件（如Label或TextInput等）。有如下格式URL：a.swf name=1&amp;pass=2;在组件中使用只要定义好一个变量，然后直接使用{name}就可以了，而对于mx：Script里则不行。如下： <br />  <br />&lt;mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="initApplication()"  &gt;<br />  &lt;mx:Script&gt;<br />    private function initApplication():void<br />   {<br />      trace (this.parameters.name+":"+this.parameters.pass);<br />                <br />   } <br /> &lt;/mx:Script&gt; <br />&lt;mx:Label id="path" width="100%" text="{name}" /&gt; <br />&lt;/mx:Application&gt;  <br /><br /><img src ="http://www.cnitblog.com/gavinkin555/aggbug/33015.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/gavinkin555/" target="_blank">gavinkin555</a> 2007-09-05 20:30 <a href="http://www.cnitblog.com/gavinkin555/articles/33015.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>数组元素随机排序 </title><link>http://www.cnitblog.com/gavinkin555/articles/32931.html</link><dc:creator>gavinkin555</dc:creator><author>gavinkin555</author><pubDate>Tue, 04 Sep 2007 06:03:00 GMT</pubDate><guid>http://www.cnitblog.com/gavinkin555/articles/32931.html</guid><wfw:comment>http://www.cnitblog.com/gavinkin555/comments/32931.html</wfw:comment><comments>http://www.cnitblog.com/gavinkin555/articles/32931.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/gavinkin555/comments/commentRss/32931.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/gavinkin555/services/trackbacks/32931.html</trackback:ping><description><![CDATA[发现flash中好像没有对数组元素进行随机排序的函数, 就自己写了一个. 虽然不是很科学, 起码可以用...<br>- -!<br><br>调用方法:&nbsp;&nbsp;randomOrder (array)<br>函数会返回一个新数组, 就是该数组随机排序后的结果<br>例子:<br>
<div class=UBBPanel>
<div class=UBBTitle>&nbsp;程序代码</div>
<div class=UBBContent><span style="COLOR: #0000ff"><strong>var</strong></span> myArray <span style="COLOR: #000000">:</span> <span style="COLOR: #000099"><strong>Array</strong></span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">[</span><span style="COLOR: #009900">"a"</span><span style="COLOR: #000000">,</span> <span style="COLOR: #009900">"b"</span><span style="COLOR: #000000">,</span> <span style="COLOR: #009900">"c"</span><span style="COLOR: #000000">,</span> <span style="COLOR: #009900">"d"</span><span style="COLOR: #000000">]</span><br>myArray <span style="COLOR: #000000">=</span> randomOrder <span style="COLOR: #000000">(</span>myArray <span style="COLOR: #000000">)</span></div>
</div>
<br>
<div class=UBBPanel>
<div class=UBBTitle>&nbsp;程序代码</div>
<div class=UBBContent><span style="COLOR: #808080">//随机改变数组的排序</span><br><span style="COLOR: #0000ff"><strong>function</strong></span> randomOrder <span style="COLOR: #000000">(</span>targetArray <span style="COLOR: #000000">:</span> <span style="COLOR: #000099"><strong>Array</strong></span><span style="COLOR: #000000">)</span> <span style="COLOR: #000000">:</span> <span style="COLOR: #000099"><strong>Array</strong></span><br><span style="COLOR: #000000">{</span><br>&nbsp;&nbsp;&nbsp;&nbsp;<span style="COLOR: #0000ff"><strong>var</strong></span> arrayLength <span style="COLOR: #000000">:</span> <span style="COLOR: #000099"><strong>Number</strong></span> <span style="COLOR: #000000">=</span> targetArray<span style="COLOR: #000000">.</span><span style="COLOR: #000099"><strong>length</strong></span><br>&nbsp;&nbsp;&nbsp;&nbsp;<span style="COLOR: #808080">//</span><br>&nbsp;&nbsp;&nbsp;&nbsp;<span style="COLOR: #808080">//先创建一个正常顺序的数组</span><br>&nbsp;&nbsp;&nbsp;&nbsp;<span style="COLOR: #0000ff"><strong>var</strong></span> tempArray1 <span style="COLOR: #000000">:</span> <span style="COLOR: #000099"><strong>Array</strong></span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">[</span><span style="COLOR: #000000">]</span><br>&nbsp;&nbsp;&nbsp;&nbsp;<span style="COLOR: #0000ff"><strong>for</strong></span> <span style="COLOR: #000000">(</span><span style="COLOR: #0000ff"><strong>var</strong></span> i <span style="COLOR: #000000">=</span> 0<span style="COLOR: #000000">;</span> i <span style="COLOR: #000000">&lt;</span> arrayLength<span style="COLOR: #000000">;</span> i <span style="COLOR: #000000">+</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">)</span><br>&nbsp;&nbsp;&nbsp;&nbsp;<span style="COLOR: #000000">{</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tempArray1 <span style="COLOR: #000000">[</span>i<span style="COLOR: #000000">]</span> <span style="COLOR: #000000">=</span> i<br>&nbsp;&nbsp;&nbsp;&nbsp;<span style="COLOR: #000000">}</span><br>&nbsp;&nbsp;&nbsp;&nbsp;<span style="COLOR: #808080">//</span><br>&nbsp;&nbsp;&nbsp;&nbsp;<span style="COLOR: #808080">//再根据上一个数组创建一个随机乱序的数组</span><br>&nbsp;&nbsp;&nbsp;&nbsp;<span style="COLOR: #0000ff"><strong>var</strong></span> tempArray2 <span style="COLOR: #000000">:</span> <span style="COLOR: #000099"><strong>Array</strong></span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">[</span><span style="COLOR: #000000">]</span><br>&nbsp;&nbsp;&nbsp;&nbsp;<span style="COLOR: #0000ff"><strong>for</strong></span> <span style="COLOR: #000000">(</span><span style="COLOR: #0000ff"><strong>var</strong></span> i <span style="COLOR: #000000">=</span> 0<span style="COLOR: #000000">;</span> i <span style="COLOR: #000000">&lt;</span> arrayLength<span style="COLOR: #000000">;</span> i <span style="COLOR: #000000">+</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">)</span><br>&nbsp;&nbsp;&nbsp;&nbsp;<span style="COLOR: #000000">{</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="COLOR: #808080">//从正常顺序数组中随机抽出元素</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tempArray2 <span style="COLOR: #000000">[</span>i<span style="COLOR: #000000">]</span> <span style="COLOR: #000000">=</span> tempArray1<span style="COLOR: #000000">.</span><span style="COLOR: #000099"><strong>splice</strong></span> <span style="COLOR: #000000">(</span><span style="COLOR: #000099"><strong>Math</strong></span><span style="COLOR: #000000">.</span><span style="COLOR: #000099"><strong>floor</strong></span> <span style="COLOR: #000000">(</span><span style="COLOR: #000099"><strong>Math</strong></span><span style="COLOR: #000000">.</span><span style="COLOR: #000099"><strong>random</strong></span> <span style="COLOR: #000000">(</span><span style="COLOR: #000000">)</span> <span style="COLOR: #000000">*</span> tempArray1<span style="COLOR: #000000">.</span><span style="COLOR: #000099"><strong>length</strong></span><span style="COLOR: #000000">)</span> <span style="COLOR: #000000">,</span> 1<span style="COLOR: #000000">)</span> <br>&nbsp;&nbsp;&nbsp;&nbsp;<span style="COLOR: #000000">}</span><br>&nbsp;&nbsp;&nbsp;&nbsp;<span style="COLOR: #808080">//</span><br>&nbsp;&nbsp;&nbsp;&nbsp;<span style="COLOR: #808080">//最后创建一个临时数组存储 根据上一个乱序的数组从targetArray中取得数据</span><br>&nbsp;&nbsp;&nbsp;&nbsp;<span style="COLOR: #0000ff"><strong>var</strong></span> tempArray3 <span style="COLOR: #000000">:</span> <span style="COLOR: #000099"><strong>Array</strong></span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">[</span><span style="COLOR: #000000">]</span><br>&nbsp;&nbsp;&nbsp;&nbsp;<span style="COLOR: #0000ff"><strong>for</strong></span> <span style="COLOR: #000000">(</span><span style="COLOR: #0000ff"><strong>var</strong></span> i <span style="COLOR: #000000">=</span> 0<span style="COLOR: #000000">;</span> i <span style="COLOR: #000000">&lt;</span> arrayLength<span style="COLOR: #000000">;</span> i <span style="COLOR: #000000">+</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">)</span><br>&nbsp;&nbsp;&nbsp;&nbsp;<span style="COLOR: #000000">{</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tempArray3 <span style="COLOR: #000000">[</span>i<span style="COLOR: #000000">]</span> <span style="COLOR: #000000">=</span> targetArray <span style="COLOR: #000000">[</span>tempArray2 <span style="COLOR: #000000">[</span>i<span style="COLOR: #000000">]</span><span style="COLOR: #000000">]</span><br>&nbsp;&nbsp;&nbsp;&nbsp;<span style="COLOR: #000000">}</span><br>&nbsp;&nbsp;&nbsp;&nbsp;<span style="COLOR: #808080">//</span><br>&nbsp;&nbsp;&nbsp;&nbsp;<span style="COLOR: #808080">//返回最后得出的数组</span><br>&nbsp;&nbsp;&nbsp;&nbsp;<span style="COLOR: #0000ff"><strong>return</strong></span> tempArray3<br><span style="COLOR: #000000">}</span></div>
</div>
<img src ="http://www.cnitblog.com/gavinkin555/aggbug/32931.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/gavinkin555/" target="_blank">gavinkin555</a> 2007-09-04 14:03 <a href="http://www.cnitblog.com/gavinkin555/articles/32931.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Flex2.0数组的使用实例</title><link>http://www.cnitblog.com/gavinkin555/articles/32930.html</link><dc:creator>gavinkin555</dc:creator><author>gavinkin555</author><pubDate>Tue, 04 Sep 2007 06:02:00 GMT</pubDate><guid>http://www.cnitblog.com/gavinkin555/articles/32930.html</guid><wfw:comment>http://www.cnitblog.com/gavinkin555/comments/32930.html</wfw:comment><comments>http://www.cnitblog.com/gavinkin555/articles/32930.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/gavinkin555/comments/commentRss/32930.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/gavinkin555/services/trackbacks/32930.html</trackback:ping><description><![CDATA[<p>Array<br>----------------------------------------------------------------<br>1.<br>&lt;mx:Script&gt;&lt;![CDATA[<br>&nbsp;&nbsp;&nbsp; var myArray:Array = ["AK", "AL", "AR"];<br>]]&gt;&lt;/mx:Script&gt;<br>2.<br>&lt;mx:Array&gt;<br>&nbsp;&nbsp;&nbsp; &lt;mx:String&gt;AK&lt;/mx:String&gt;<br>&nbsp;&nbsp;&nbsp; &lt;mx:String&gt;AL&lt;/mx:String&gt;<br>&nbsp;&nbsp;&nbsp; &lt;mx:String&gt;AR&lt;/mx:String&gt;<br>&lt;/mx:Array&gt;<br>3.<br>&lt;mx:Script&gt;&lt;![CDATA[<br>&nbsp;&nbsp;&nbsp; var expenses:Array = [<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {Month: "January", Profit: 2000, Expenses: 1500, Amount: 450},<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {Month: "February", Profit: 1000, Expenses: 200, Amount: 600},<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {Month: "March", Profit: 1500, Expenses: 500, Amount: 300},<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {Month: "April", Profit: 500, Expenses: 300, Amount: 500},<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {Month: "May", Profit: 1000, Expenses: 450, Amount: 250},<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {Month: "June", Profit: 2000, Expenses: 500, Amount: 700}<br>&nbsp;&nbsp;&nbsp; ];<br>]]&gt;&lt;/mx:Script&gt;<br>-----------------------------------------------------------------------</p>
<p>----------------------------------------------------------------------<br>// Use Array constructor.<br>var myArray:Array = new Array();<br>myArray.push("one");<br>myArray.push("two");<br>myArray.push("three");<br>trace (myArray); // output: one,two,three</p>
<p>// Use Array literal.<br>var myArray:Array = ["one", "two", "three"];<br>trace&nbsp; (myArray); // output: one,two,three<br>-----------------------------------------------------------------</p>
<p>----------------------------------------------------------------<br>var names:Array = new Array();<br>trace(names.length); // output: 0</p>
<p>var names:Array = new Array(3);<br>trace(names.length); // output: 3<br>trace(names[0]); // output: undefined<br>trace(names[1]); // output: undefined<br>trace(names[2]); // output: undefined</p>
<p>var names:Array = new Array("John", "Jane", "David");<br>trace(names.length); // output: 3<br>trace(names[0]); // output: John<br>trace(names[1]); // output: Jane<br>trace(names[2]); // output: David<br>-------------------------------------------------------------------</p>
<p>-----------------------------------------------------------------------<br>var planets:Array = new Array();<br>planets.push("Mars");&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // array contents: Mars<br>planets.unshift("Mercury"); // array contents: Mercury,Mars<br>planets.splice(1, 0, "Venus", "Earth");<br>trace(planets);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // array contents: Mercury,Venus,Earth,Mars</p>
<p><br>var oceans:Array = ["Victoria", "Pacific", "Aral", "Superior", "Indian", "Huron"];<br>oceans.splice(2, 2, "Arctic", "Atlantic"); // replaces Aral and Superior<br>oceans.pop();&nbsp;&nbsp; // removes Huron<br>oceans.shift(); // removes Victoria<br>trace(oceans);&nbsp; // output: Pacific,Arctic,Atlantic,Indian</p>
<p>var lakes:Array = oceans.splice(2, 2, "Arctic", "Atlantic");<br>trace(lakes); // output: Aral,Superior</p>
<p><br>var oceans:Array = ["Arctic", "Pacific", "Victoria", "Indian", "Atlantic"];<br>delete oceans[2];<br>trace(oceans);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // output: Arctic,Pacific,,Indian,Atlantic<br>trace(oceans[2]);&nbsp;&nbsp;&nbsp;&nbsp; // output: undefined<br>trace(oceans.length); // output: 5</p>
<p>var oceans:Array = ["Arctic", "Pacific", "Victoria", "Aral", "Superior"];<br>oceans.length = 2;<br>trace(oceans); // output: Arctic,Pacific</p>
<p><br>var oceans:Array = ["Arctic", "Atlantic", "Indian", "Pacific"];<br>oceans.reverse();<br>trace(oceans); // output: Pacific,Indian,Atlantic,Arctic</p>
<p>&nbsp;</p>
<p>var poets:Array = ["Blake", "cummings", "Angelou", "Dante"];<br>poets.sort(); // default sort<br>trace(poets); // output: Angelou,Blake,Dante,cummings</p>
<p>poets.sort(Array.CASEINSENSITIVE);<br>trace(poets); // output: Angelou,Blake,cummings,Dante</p>
<p>poets.sort(Array.DESCENDING);<br>trace(poets); // output: Dante,cummings,Blake,Angelou</p>
<p>poets.sort(Array.DESCENDING | Array.CASEINSENSITIVE); // use two options<br>trace(poets); // output: Dante,cummings,Blake,Angelou<br>----------------------------------------------------------------------------<br>var names:Array = new Array("John Q. Smith", "Jane Doe", "Mike Jones");<br>function orderLastName(a, b):int {<br>&nbsp; var lastName:RegExp = /\b\S+$/;<br>&nbsp; var name1 = a.match(lastName);<br>&nbsp; var name2 = b.match(lastName);<br>&nbsp; if (name1 &lt; name2) {<br>&nbsp;&nbsp;&nbsp; return -1;<br>&nbsp; } else if (name1 &gt; name2) {<br>&nbsp;&nbsp;&nbsp; return 1;<br>&nbsp; } else {<br>&nbsp;&nbsp;&nbsp; return 0;<br>&nbsp; }<br>}<br>trace(names); // output: John Q. Smith,Jane Doe,Mike Jones<br>names.sort(orderLastName);<br>trace(names); // output: Jane Doe,Mike Jones,John Q. Smith<br>--------------------------------------------------------------------------</p>
<p>----------------------------------------------------------------------------<br>var poets:Array = new Array();<br>poets.push({name:"Angelou", born:"1928"});<br>poets.push({name:"Blake", born:"1757"});<br>poets.push({name:"cummings", born:"1894"});<br>poets.push({name:"Dante", born:"1265"});<br>poets.push({name:"Wang", born:"701"});</p>
<p>poets.sortOn("born", Array.NUMERIC);<br>for (var i:int = 0; i &lt; poets.length; ++i) {<br>&nbsp;&nbsp;&nbsp; trace(poets[i].name, poets[i].born);<br>}<br>/* output:<br>Wang 701<br>Dante 1265<br>Blake 1757<br>cummings 1894<br>Angelou 1928<br>*/</p>
<p><br>var indices:Array;<br>indices = poets.sortOn("born", Array.NUMERIC | Array.RETURNINDEXEDARRAY);<br>for (var i:int = 0; i &lt; indices.length; ++i) {<br>&nbsp;&nbsp;&nbsp; var index:int = indices[i];<br>&nbsp;&nbsp;&nbsp; trace(poets[index].name, poets[index].born);<br>}<br>/* output:<br>Wang 701<br>Dante 1265<br>Blake 1757<br>cummings 1894<br>Angelou 1928<br>*/<br>---------------------------------------------------------------------</p>
<p>-----------------------------------------------------------------------<br>var array1:Array = ["alpha", "beta"];<br>var array2:Array = array1.concat("gamma", "delta");<br>trace(array2); // output: alpha,beta,gamma,delta</p>
<p>var array3:Array = array1.concat(array2);<br>trace(array3); // output: alpha,beta,alpha,beta,gamma,delta</p>
<p>var array4:Array = array3.slice(2,5);<br>trace(array4); // output: alpha,beta,gamma</p>
<p>var rivers:Array = ["Nile", "Amazon", "Yangtze", "Mississippi"];<br>var riverCSV:String = rivers.toString();<br>trace(riverCSV); // output: Nile,Amazon,Yangtze,Mississippi<br>var riverPSV:String = rivers.join("+");<br>trace(riverPSV); // output: Nile+Amazon+Yangtze+Mississippi</p>
<p>var nested:Array = ["b","c","d"];&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>var letters:Array = ["a",nested,"e"]; <br>var joined:String = letters.join("+");<br>trace(joined); // output: a+b,c,d+e<br>------------------------------------------------------------------</p>
<p>------------------------------------------------------------------<br>&nbsp;<br>public dynamic class TypedArray extends Array {<br>&nbsp;&nbsp;&nbsp; private const dataType:Class;</p>
<p>&nbsp;&nbsp;&nbsp; public function TypedArray(...args) {<br>&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; AS3 override function concat(...args):Array {<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; AS3 override function push(...args):uint {<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; AS3 override function splice(...args) {<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; AS3 override function unshift(...args):uint {<br>&nbsp;&nbsp;&nbsp; }<br>}&nbsp;&nbsp;&nbsp; </p>
<p>------------------------------------------------------------------</p>
<p>public dynamic class Array {<br>&nbsp;&nbsp;&nbsp; public function Array(...args) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var n:uint = args.length<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (n == 1 &amp;&amp; (args[0] is Number))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var dlen:Number = args[0];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var ulen:uint = dlen<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (ulen != dlen)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; throw new RangeError("Array index is not a 32-bit unsigned integer ("+dlen+")")<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; length = ulen;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; length = n;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (var i:int=0; i &lt; n; i++) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this[i] = args[i] <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp; <br>}<br>-------------------------------------------------------------------------------------------------------<br>public dynamic class TypedArray extends Array {<br>&nbsp;&nbsp;&nbsp; private var dataType:Class;<br>&nbsp;&nbsp;&nbsp; public function TypedArray(typeParam:Class, ...args) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dataType = typeParam;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var n:uint = args.length<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (n == 1 &amp;&amp; (args[0] is Number))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var dlen:Number = args[0];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var ulen:uint = dlen<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (ulen != dlen)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; throw new RangeError("Array index is not a 32-bit unsigned integer ("+dlen+")")<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; length = ulen;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (var i:int=0; i &lt; n; i++) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // type check done in push() <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.push(args[i])<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; length = this.length;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp; <br>}</p>
<p>-----------------------------------------------------------------------------------------------------&nbsp;&nbsp; <br>&nbsp;AS3 override function push(...args):uint {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (var i:* in args) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (!(args[i] is dataType)) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; args.splice(i,1);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return (super.push.apply(this, args));<br>&nbsp;&nbsp;&nbsp; }<br>-----------------------------------------------------------------------------------------------------&nbsp;&nbsp;&nbsp; <br>AS3 override function concat(...args):Array {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var passArgs:TypedArray = new TypedArray(dataType);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (var i:* in args) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // type check done in push()<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; passArgs.push(args[i]);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return (super.concat.apply(this, passArgs));<br>&nbsp;&nbsp;&nbsp; }<br>-----------------------------------------------------------------------------------------------------&nbsp;&nbsp;&nbsp; <br>AS3 override function splice(...args):* {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (args.length &gt; 2) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (var i:int=2; i&lt; args.length; i++) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (!(args[i] is dataType)) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; args.splice(i,1);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return (super.splice.apply(this, args));<br>&nbsp;&nbsp;&nbsp; }<br>-------------------------------------------------------------------------<br>&nbsp;&nbsp; AS3 override function unshift(...args):uint {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (var i:* in args) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (!(args[i] is dataType)) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; args.splice(i,1);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return (super.unshift.apply(this, args));<br>&nbsp;&nbsp;&nbsp; }<br>} </p>
<img src ="http://www.cnitblog.com/gavinkin555/aggbug/32930.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/gavinkin555/" target="_blank">gavinkin555</a> 2007-09-04 14:02 <a href="http://www.cnitblog.com/gavinkin555/articles/32930.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ResizeManager:让空器组件可以调整大小</title><link>http://www.cnitblog.com/gavinkin555/articles/32884.html</link><dc:creator>gavinkin555</dc:creator><author>gavinkin555</author><pubDate>Mon, 03 Sep 2007 07:42:00 GMT</pubDate><guid>http://www.cnitblog.com/gavinkin555/articles/32884.html</guid><wfw:comment>http://www.cnitblog.com/gavinkin555/comments/32884.html</wfw:comment><comments>http://www.cnitblog.com/gavinkin555/articles/32884.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/gavinkin555/comments/commentRss/32884.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/gavinkin555/services/trackbacks/32884.html</trackback:ping><description><![CDATA[<div class="g_t_left c07 content" id=blogtext__fks_4If0AomNXc-YotMoErYUmPYbB3M8cMIQ>
<p style="TEXT-INDENT: 2em">Flex中的容器组件Panel,TitleWindow,Canvase等是无法调整大小的。你可以拓展容器组件来解决这个问题。但使用ResizeManager更方便。ResizeManager的使用很简单。例如。</p>
<p style="TEXT-INDENT: 2em"></p>
<p style="TEXT-INDENT: 2em">var window:TitleWindow = TitleWindow(PopUpManager.createPopUp( this, TitleWindow , false));</p>
<p style="TEXT-INDENT: 2em">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; window.x = 100;</p>
<p style="TEXT-INDENT: 2em">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; window.y = 100;</p>
<p style="TEXT-INDENT: 2em">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; window.width = 200;</p>
<p style="TEXT-INDENT: 2em">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; window.height = 200;</p>
<p style="TEXT-INDENT: 2em">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; window.title = ";PopUp Window"</p>
<p style="TEXT-INDENT: 2em">&nbsp; &nbsp; ResizeManager.enableResize(window, 50);<br><br><a title=Resizemanager href="" href_cetemp>Resizemanager</a></p>
<p style="TEXT-INDENT: 2em"></p>
</div>
<img src ="http://www.cnitblog.com/gavinkin555/aggbug/32884.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/gavinkin555/" target="_blank">gavinkin555</a> 2007-09-03 15:42 <a href="http://www.cnitblog.com/gavinkin555/articles/32884.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title> 在主程序与弹出窗口之间传递数据的例子</title><link>http://www.cnitblog.com/gavinkin555/articles/32882.html</link><dc:creator>gavinkin555</dc:creator><author>gavinkin555</author><pubDate>Mon, 03 Sep 2007 07:38:00 GMT</pubDate><guid>http://www.cnitblog.com/gavinkin555/articles/32882.html</guid><wfw:comment>http://www.cnitblog.com/gavinkin555/comments/32882.html</wfw:comment><comments>http://www.cnitblog.com/gavinkin555/articles/32882.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/gavinkin555/comments/commentRss/32882.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/gavinkin555/services/trackbacks/32882.html</trackback:ping><description><![CDATA[<div class="g_t_left c07 content" id=blogtext__fks_yHlcaCPIvubpiXmKR7Uk9DItU8MmHaK2>
<p style="TEXT-INDENT: 2em">这个是关于关于主程序与弹出窗口之间传递数据的，原文( This example consists of a custom mxml component that extends TitleWindow, and a test app that uses it as a non-modal popup window.&nbsp; It demonstrates various ways to pass data between the main application and the pop up window.&nbsp; This example does NOT use events. </p>
<p style="TEXT-INDENT: 2em">The test app pops up the window, passes it values for both built-in properties, like title and width, and custom properties, like mainApp.</p>
<p style="TEXT-INDENT: 2em">The pop-up fields bind to local variables and to mainApp properties.&nbsp; Items selected in the Main App datagrid are displayed in the pop-up. the item selected in the pop-up is displayed in a text field in the Main App.</p>
<p style="TEXT-INDENT: 2em">I hope you find it useful.</p>
<p style="TEXT-INDENT: 2em">Tracy Spratt),其实这个技巧很基础，如果有仔细看帮助文档肯定都会了，不过这个东西对初学者来说还是个好东东。</p>
<p style="TEXT-INDENT: 2em">这个例子包括一个扩展自TitleWindow的自定义组件和一个示例程序。它展示了主程序与弹出窗口之间的几种传输数据的方法。注意，这里还没有用到强大的事件机制。原文作者是Tracy Spratt，表示感谢。代码如下：<br></p>
<p style="TEXT-INDENT: 2em">主程序：TitleWindowDataTest.mxml </p>
<p style="TEXT-INDENT: 2em"><img src="http://www.cnflex.cn/upimg/allimg/070321/0932220.gif" border=0> 程序代码</p>
<p style="TEXT-INDENT: 2em">&lt;?xml version="1.0" encoding="utf-8"?&gt;</p>
<p style="TEXT-INDENT: 2em">&lt;!-- TitleWindowDataTest.mxml </p>
<p style="TEXT-INDENT: 2em">&nbsp;&nbsp;An application that uses custom pop-up TitleWindowData--&gt;</p>
<p style="TEXT-INDENT: 2em">&lt;mx:Application xmlns:mx="<a href="http://www.adobe.com/2006/mxml"><font color=#268ba9>http://www.adobe.com/2006/mxml</font></a>" horizontalAlign="left" layout="vertical"</p>
<p style="TEXT-INDENT: 2em">&nbsp;&nbsp;initialize="initApp()"&gt;</p>
<p style="TEXT-INDENT: 2em">&lt;mx:Script&gt;</p>
<p style="TEXT-INDENT: 2em">&lt;![CDATA[</p>
<p style="TEXT-INDENT: 2em">import mx.containers.TitleWindow;</p>
<p style="TEXT-INDENT: 2em">import mx.managers.PopUpManager;</p>
<p style="TEXT-INDENT: 2em">import mx.collections.ArrayCollection; </p>
<p style="TEXT-INDENT: 2em">[Bindable]public var gsBindMe:String = "Change me!" ;&nbsp;&nbsp;&nbsp;&nbsp; //</p>
<p style="TEXT-INDENT: 2em">[Bindable]private var acDP2:ArrayCollection;</p>
<p style="TEXT-INDENT: 2em">[Bindable]public var acItemsSelected:ArrayCollection;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//set by itemClick</p>
<p style="TEXT-INDENT: 2em">private function initApp():void</p>
<p style="TEXT-INDENT: 2em">{</p>
<p style="TEXT-INDENT: 2em">&nbsp;&nbsp;acDP2 = new ArrayCollection();</p>
<p style="TEXT-INDENT: 2em">&nbsp;&nbsp;acDP2.addItem({artist:"Pink Floyd",price:29.99,album:"Meddle"});</p>
<p style="TEXT-INDENT: 2em">&nbsp;&nbsp;acDP2.addItem({artist:"Pink Floyd",price:29.99,album:"More"});</p>
<p style="TEXT-INDENT: 2em">&nbsp;&nbsp;acDP2.addItem({artist:"Genesis",price:22.99,album:"Trespass"});</p>
<p style="TEXT-INDENT: 2em">&nbsp;&nbsp;acDP2.addItem({artist:"Yes",price:22.99,album:"Close to the Edge"});</p>
<p style="TEXT-INDENT: 2em">&nbsp;&nbsp;acDP2.addItem({artist:"King Crimson",price:21.99,album:"Wake of Posiedon"});</p>
<p style="TEXT-INDENT: 2em">}// </p>
<p style="TEXT-INDENT: 2em">private function showTitleWindow():void</p>
<p style="TEXT-INDENT: 2em">{</p>
<p style="TEXT-INDENT: 2em">&nbsp;&nbsp;var titleWindowInstance:TitleWindowData = </p>
<p style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TitleWindowData(PopUpManager.createPopUp(this, </p>
<p style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TitleWindowData, </p>
<p style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; false));&nbsp;&nbsp;&nbsp;&nbsp; //instantiate and show the title window</p>
<p style="TEXT-INDENT: 2em">&nbsp;&nbsp;PopUpManager.centerPopUp(titleWindowInstance);</p>
<p style="TEXT-INDENT: 2em">&nbsp;&nbsp;titleWindowInstance.title = "Non-Modal Title Window Data";//built-in property</p>
<p style="TEXT-INDENT: 2em">&nbsp;&nbsp;titleWindowInstance.width = 400;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //built-in property</p>
<p style="TEXT-INDENT: 2em">&nbsp;&nbsp;titleWindowInstance.height = 450;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //built-in property&nbsp;&nbsp; </p>
<p style="TEXT-INDENT: 2em">&nbsp;&nbsp;titleWindowInstance.mainApp = this;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//Reference to the main app scope</p>
<p style="TEXT-INDENT: 2em">&nbsp;&nbsp;titleWindowInstance.gnMyNumber = parseFloat(tiMyNumber.text);&nbsp;&nbsp;//Pass a simple value to the popup</p>
<p style="TEXT-INDENT: 2em">}</p>
<p style="TEXT-INDENT: 2em">private function showSelectedItems(event:Event):void</p>
<p style="TEXT-INDENT: 2em">{</p>
<p style="TEXT-INDENT: 2em">&nbsp;&nbsp; acItemsSelected = new ArrayCollection(dg2.selectedItems)</p>
<p style="TEXT-INDENT: 2em">}//</p>
<p style="TEXT-INDENT: 2em">]]&gt;</p>
<p style="TEXT-INDENT: 2em">&lt;/mx:Script&gt;</p>
<p style="TEXT-INDENT: 2em">&nbsp;</p>
<p style="TEXT-INDENT: 2em">&nbsp;&nbsp;&lt;mx:Label text="Main App" fontSize="18" /&gt;</p>
<p style="TEXT-INDENT: 2em">&lt;mx:Text text="Selected Items will be passed into the pop-up. Select an item and click 'Show Title Window' button"&nbsp;&nbsp;width="300"/&gt;</p>
<p style="TEXT-INDENT: 2em">&lt;mx:DataGrid id="dg2" allowMultipleSelection="true" itemClick="showSelectedItems(event)"</p>
<p style="TEXT-INDENT: 2em">&nbsp;&nbsp; dataProvider="{acDP2}" &gt; </p>
<p style="TEXT-INDENT: 2em">&nbsp;&nbsp;&lt;mx:columns&gt;</p>
<p style="TEXT-INDENT: 2em">&nbsp;&nbsp; &lt;mx:Array&gt;</p>
<p style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&lt;mx:DataGridColumn headerText="Artist" dataField="artist" /&gt;</p>
<p style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&lt;mx:DataGridColumn headerText="Price" dataField="price" editable="true"/&gt;</p>
<p style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&lt;mx:DataGridColumn headerText="Album" dataField="album" /&gt;</p>
<p style="TEXT-INDENT: 2em">&nbsp;&nbsp; &lt;/mx:Array&gt;</p>
<p style="TEXT-INDENT: 2em">&nbsp;&nbsp;&lt;/mx:columns&gt;&nbsp;&nbsp;&nbsp;&nbsp;</p>
<p style="TEXT-INDENT: 2em">&lt;/mx:DataGrid&gt;</p>
<p style="TEXT-INDENT: 2em">&lt;mx:HBox &gt;</p>
<p style="TEXT-INDENT: 2em">&nbsp;&nbsp;&lt;mx:Label text="MyNumber:"&nbsp;&nbsp;width="100"/&gt;</p>
<p style="TEXT-INDENT: 2em">&nbsp;&nbsp;&lt;mx:TextInput id="tiMyNumber"&nbsp;&nbsp;text="99"/&gt;</p>
<p style="TEXT-INDENT: 2em">&lt;/mx:HBox&gt;</p>
<p style="TEXT-INDENT: 2em">&lt;mx:HBox &gt;</p>
<p style="TEXT-INDENT: 2em">&nbsp;&nbsp;&lt;mx:Label text="Bind Me"&nbsp;&nbsp;width="100"/&gt;</p>
<p style="TEXT-INDENT: 2em">&nbsp;&nbsp;&lt;mx:TextInput id="tiBindMe" text="{gsBindMe}" </p>
<p style="TEXT-INDENT: 2em">&nbsp;&nbsp; change="gsBindMe = tiBindMe.text"/&gt;</p>
<p style="TEXT-INDENT: 2em">&lt;/mx:HBox&gt; </p>
<p style="TEXT-INDENT: 2em">&lt;mx:Button label="Show Title Window (Non-Modal)" click="showTitleWindow()"/&gt;</p>
<p style="TEXT-INDENT: 2em">&lt;mx:HBox &gt;</p>
<p style="TEXT-INDENT: 2em">&nbsp;&nbsp;&lt;mx:Text text="Final Selection: From item selected in pop-up"&nbsp;&nbsp;width="100"/&gt;</p>
<p style="TEXT-INDENT: 2em">&nbsp;&nbsp;&lt;mx:TextInput id="tiFinalSelection"/&gt;</p>
<p style="TEXT-INDENT: 2em">&lt;/mx:HBox&gt;&nbsp;&nbsp;</p>
<p style="TEXT-INDENT: 2em">&lt;/mx:Application&gt;</p>
<p style="TEXT-INDENT: 2em">&nbsp;</p>
<p style="TEXT-INDENT: 2em">自定义组件：TitleWindowData.mxml <br></p>
<p style="TEXT-INDENT: 2em"><img src="http://www.cnflex.cn/upimg/allimg/070321/0932220.gif" border=0> 程序代码</p>
<p style="TEXT-INDENT: 2em">&lt;?xml version="1.0" encoding="utf-8"?&gt;</p>
<p style="TEXT-INDENT: 2em">&lt;!-- TitleWindowData.mxml </p>
<p style="TEXT-INDENT: 2em">&nbsp;&nbsp;A sample custom pop-up that extends TitleWindow--&gt;</p>
<p style="TEXT-INDENT: 2em">&lt;mx:TitleWindow xmlns:mx="<a href="http://www.adobe.com/2006/mxml"><font color=#268ba9>http://www.adobe.com/2006/mxml</font></a>" layout="vertical"</p>
<p style="TEXT-INDENT: 2em">&nbsp;&nbsp;creationComplete="initComponent()"</p>
<p style="TEXT-INDENT: 2em">&nbsp;&nbsp;showCloseButton="true"</p>
<p style="TEXT-INDENT: 2em">&nbsp;&nbsp;close="closeWindow()"&gt;</p>
<p style="TEXT-INDENT: 2em">&lt;mx:Script&gt;&lt;![CDATA[</p>
<p style="TEXT-INDENT: 2em">&nbsp;&nbsp;import mx.managers.PopUpManager;</p>
<p style="TEXT-INDENT: 2em">&nbsp;&nbsp;import mx.collections.ArrayCollection;</p>
<p style="TEXT-INDENT: 2em">&nbsp;&nbsp;</p>
<p style="TEXT-INDENT: 2em">[Bindable]public var mainApp:TitleWindowDataTest = null;&nbsp;&nbsp;</p>
<p style="TEXT-INDENT: 2em">[Bindable]public var gsMyString:String;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
<p style="TEXT-INDENT: 2em">[Bindable]public var gnMyNumber:Number;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
<p style="TEXT-INDENT: 2em">[Bindable]public var acItemsSelected:ArrayCollection;</p>
<p style="TEXT-INDENT: 2em">private function initComponent():void</p>
<p style="TEXT-INDENT: 2em">{</p>
<p style="TEXT-INDENT: 2em">}</p>
<p style="TEXT-INDENT: 2em">private function closeWindow():void</p>
<p style="TEXT-INDENT: 2em">{</p>
<p style="TEXT-INDENT: 2em">&nbsp;&nbsp; PopUpManager.removePopUp(this);</p>
<p style="TEXT-INDENT: 2em">}//closeWindow</p>
<p style="TEXT-INDENT: 2em">private function showFinalSelection(oEvent:Event):void</p>
<p style="TEXT-INDENT: 2em">{</p>
<p style="TEXT-INDENT: 2em">&nbsp;&nbsp; mainApp.tiFinalSelection.text = oEvent.target.selectedItem.album;</p>
<p style="TEXT-INDENT: 2em">}//showFinalSelection</p>
<p style="TEXT-INDENT: 2em">]]&gt;&lt;/mx:Script&gt;</p>
<p style="TEXT-INDENT: 2em">&lt;mx:Text text="The data grid below shows the selectedItems in the data grid in the Main app. This dataProvider is bound to a local variable which is set by Main App datagrid itemClick. Select additional items(ctrl-click) in Main App, they will display here. Select an item here. It will display in Main App 'Final Selection' control." width="300" /&gt;</p>
<p style="TEXT-INDENT: 2em">&lt;mx:DataGrid id="dg2" rowCount="3" </p>
<p style="TEXT-INDENT: 2em">&nbsp;&nbsp; dataProvider="{mainApp.acItemsSelected}"</p>
<p style="TEXT-INDENT: 2em">&nbsp;&nbsp; change="showFinalSelection(event)" &gt; </p>
<p style="TEXT-INDENT: 2em">&nbsp;&nbsp;&lt;mx:columns&gt;</p>
<p style="TEXT-INDENT: 2em">&nbsp;&nbsp; &lt;mx:Array&gt;</p>
<p style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&lt;mx:DataGridColumn headerText="Artist" dataField="artist" /&gt;</p>
<p style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&lt;mx:DataGridColumn headerText="Price" dataField="price" editable="true"/&gt;</p>
<p style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&lt;mx:DataGridColumn headerText="Album" dataField="album" /&gt;</p>
<p style="TEXT-INDENT: 2em">&nbsp;&nbsp; &lt;/mx:Array&gt;</p>
<p style="TEXT-INDENT: 2em">&nbsp;&nbsp;&lt;/mx:columns&gt;&nbsp;&nbsp;&nbsp;&nbsp;</p>
<p style="TEXT-INDENT: 2em">&lt;/mx:DataGrid&gt;</p>
<p style="TEXT-INDENT: 2em">&lt;mx:HBox &gt;</p>
<p style="TEXT-INDENT: 2em">&nbsp;&nbsp;&lt;mx:Label id="lblMyNumber" text="{gnMyNumber}"&nbsp;&nbsp;width="100"/&gt;</p>
<p style="TEXT-INDENT: 2em">&nbsp;&nbsp;&lt;mx:Text text="Bound to local variable set at pop-up. Changes to Main App control do NOT change this" width="200" /&gt;</p>
<p style="TEXT-INDENT: 2em">&lt;/mx:HBox&gt;</p>
<p style="TEXT-INDENT: 2em">&lt;mx:HBox &gt;</p>
<p style="TEXT-INDENT: 2em">&nbsp;&nbsp;&lt;mx:Label text="{mainApp.gsBindMe}"&nbsp;&nbsp;width="100"/&gt;</p>
<p style="TEXT-INDENT: 2em">&nbsp;&nbsp;&lt;mx:Text text="Bound to mainApp local variable via passed in reference. Changes in Main App DO change this." width="200"&nbsp;&nbsp;/&gt;</p>
<p style="TEXT-INDENT: 2em">&lt;/mx:HBox&gt;&nbsp;&nbsp;</p>
<p style="TEXT-INDENT: 2em">&nbsp;&nbsp;</p>
<p style="TEXT-INDENT: 2em">&lt;/mx:TitleWindow&gt;</p>
<p style="TEXT-INDENT: 2em"></p>
<p style="TEXT-INDENT: 2em"></p>
</div>
<img src ="http://www.cnitblog.com/gavinkin555/aggbug/32882.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/gavinkin555/" target="_blank">gavinkin555</a> 2007-09-03 15:38 <a href="http://www.cnitblog.com/gavinkin555/articles/32882.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Flex2 从弹出窗口中取回值</title><link>http://www.cnitblog.com/gavinkin555/articles/32883.html</link><dc:creator>gavinkin555</dc:creator><author>gavinkin555</author><pubDate>Mon, 03 Sep 2007 07:38:00 GMT</pubDate><guid>http://www.cnitblog.com/gavinkin555/articles/32883.html</guid><wfw:comment>http://www.cnitblog.com/gavinkin555/comments/32883.html</wfw:comment><comments>http://www.cnitblog.com/gavinkin555/articles/32883.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/gavinkin555/comments/commentRss/32883.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/gavinkin555/services/trackbacks/32883.html</trackback:ping><description><![CDATA[<div class="g_t_left c07 content" id=blogtext__fks_7XXUtsg9pxTOwBsxvASQ8IrDez05DGon>
<p>//应用程序窗口 Main.mxml<br><br>&lt;?xml version="1.0" encoding="utf-8"?&gt;<br>&lt;mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"&gt;<br><br>&nbsp;&nbsp;&nbsp; &lt;mx:Script&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;![CDATA[<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; import flash.events.Event;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; import mx.managers.PopUpManager;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public var popUp:TestTitleWindow;<br>&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public function displayForm():void {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Array with data for the custom control ComboBox control.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var doctypes:Array = ["*.as", "*.mxml", "*.swc"]<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Create the pop-up and cast the return value of the createPopUp()<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Method to the ArrayEntryForm custom component.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; popUp =TestTitleWindow(PopUpManager.createPopUp(this, TestTitleWindow, true));<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Set TitleWindow properties.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; popUp.title="Select File Type";<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; popUp.showCloseButton=true;<br>&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Set the event listeners for the ArrayEntryForm component.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; popUp.addEventListener("close", removeMe);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; popUp["cancelButton"].addEventListener("click", removeMe);&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; popUp["okButton"].addEventListener("click", submitData);&nbsp;&nbsp; <br>&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Set properties of the ArrayEntryForm custom control.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; popUp.myArray = doctypes;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PopUpManager.centerPopUp(popUp);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // OK button click event listener.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Sets the target component in the application to the<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // selected ComboBox item value.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private function submitData(event:Event):void {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ti1.text = String(popUp.cb1.selectedItem);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //removeMe();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PopUpManager.removePopUp(popUp);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Cancel button click event listener.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private function removeMe(event:Event):void {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PopUpManager.removePopUp(popUp);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ]]&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/mx:Script&gt;<br><br>&nbsp;&nbsp;&nbsp; &lt;mx:VBox&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;mx:TextInput id="ti1" text=""/&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/mx:VBox&gt;<br>&nbsp;&nbsp;&nbsp; &lt;mx:Button id="btnSelect" label="Select File Type" click="displayForm();"/&gt;<br>&lt;/mx:Application&gt;<br></p>
<p><br>//弹出窗口 TestTitleWindow.mxml<br><br>&lt;?xml version="1.0" encoding="utf-8"?&gt;<br>&lt;mx:TitleWindow xmlns:mx="http://www.adobe.com/2006/mxml"<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; showCloseButton="true" width="410" borderAlpha="1" height="260"&gt;<br><br>&nbsp;&nbsp;&nbsp; &lt;mx:Script&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;![CDATA[<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; import mx.managers.PopUpManager;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Variables whose values are set by the main application.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Data provider array for the components ComboBox control.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [Bindable]<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public var myArray:Array;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ]]&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/mx:Script&gt;<br><br>&nbsp;&nbsp;&nbsp; &lt;mx:ComboBox id="cb1" dataProvider="{myArray}" width="124"/&gt;<br>&nbsp;&nbsp;&nbsp; &lt;mx:HBox height="22"&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;mx:Button id="okButton" label="OK"/&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;mx:Button id="cancelButton" label="Cancel"/&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/mx:HBox&gt;<br>&lt;/mx:TitleWindow&gt;</p>
</div>
<img src ="http://www.cnitblog.com/gavinkin555/aggbug/32883.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/gavinkin555/" target="_blank">gavinkin555</a> 2007-09-03 15:38 <a href="http://www.cnitblog.com/gavinkin555/articles/32883.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Flex各种Component体会</title><link>http://www.cnitblog.com/gavinkin555/articles/32880.html</link><dc:creator>gavinkin555</dc:creator><author>gavinkin555</author><pubDate>Mon, 03 Sep 2007 07:37:00 GMT</pubDate><guid>http://www.cnitblog.com/gavinkin555/articles/32880.html</guid><wfw:comment>http://www.cnitblog.com/gavinkin555/comments/32880.html</wfw:comment><comments>http://www.cnitblog.com/gavinkin555/articles/32880.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/gavinkin555/comments/commentRss/32880.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/gavinkin555/services/trackbacks/32880.html</trackback:ping><description><![CDATA[<div class="g_t_left c07 content" id=blogtext__fks_sya-cAHv1gLPGgavUjBLkMHpz5GXwp14>
<p style="TEXT-INDENT: 2em">&lt;mx:HorizontalList&gt;一种水平的List,可用于展示图片,而 &lt;mx:List&gt;则是竖直的List,&lt;mx:TileList&gt;像表格式的List,自己确定列数</p>
<p style="TEXT-INDENT: 2em">&lt;mx:TabBar&gt;也会是常用到的那种,各种Bar与&lt;mx:ViewStack&gt;的结合可生成导航效果</p>
<p style="TEXT-INDENT: 2em">&lt;mx:DateField&gt;选择日期</p>
<p style="TEXT-INDENT: 2em">&lt;mx:MenuBar&gt;常用</p>
<p style="TEXT-INDENT: 2em">&lt;mx:RichTextEdit&gt;编辑文本用</p>
<p style="TEXT-INDENT: 2em">&lt;mx:Accordion&gt;常用,灵活</p>
<p style="TEXT-INDENT: 2em">&lt;mx:Box&gt;系列与&lt;mx:ControlBar&gt;比较常见 ,&lt;mx:DividedBox&gt;也比较常用</p>
<p style="TEXT-INDENT: 2em">&lt;mx:TabNavigator&gt;比&lt;mx:TabBar&gt;更好用些</p>
<p style="TEXT-INDENT: 2em">&lt;mx:Tile&gt;作为容器也是不错的选择</p>
<p style="TEXT-INDENT: 2em">Validator有很多常用的validator了,如果对效果不满意,可自定义</p>
<p style="TEXT-INDENT: 2em">一个有意思的东西&nbsp;&lt;mx:RegExpValidator&gt;用来查找匹配字符串的</p>
<p style="TEXT-INDENT: 2em">Formatter也是比较有用的东西</p>
<p style="TEXT-INDENT: 2em">Effect中</p>
<p style="TEXT-INDENT: 2em">&nbsp;&nbsp; &lt;mx:AnimateProperty&gt;可实现拉伸效果</p>
<p style="TEXT-INDENT: 2em">&nbsp;&nbsp; &lt;mx:Blur&gt;模糊效果</p>
<p style="TEXT-INDENT: 2em">&nbsp;&nbsp; &lt;mx:Dissolve&gt;实现淡出淡入效果,与&lt;mx:Fade&gt;相似</p>
<p style="TEXT-INDENT: 2em">&nbsp;&nbsp; &lt;mx:Glow&gt;外发光效果</p>
<p style="TEXT-INDENT: 2em">&nbsp;&nbsp; &lt;mx:Iris&gt;以矩形方式出现或消失</p>
<p style="TEXT-INDENT: 2em">&nbsp;&nbsp; &lt;mx:Move&gt;移动效果</p>
<p style="TEXT-INDENT: 2em">&nbsp;&nbsp; &lt;mx:Parallel&gt;多种效果叠加</p>
<p style="TEXT-INDENT: 2em">&nbsp;&nbsp; &lt;mx:Pause&gt;停止&nbsp;&nbsp; mx.effects.easing.Bounce.easeOut可产生弹动效果</p>
<p style="TEXT-INDENT: 2em">&nbsp;&nbsp; &lt;mx:Resize&gt;改变大小</p>
<p style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&lt;mx:Rotate&gt;旋转角度</p>
<p style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&lt;mx:SoundEffect&gt;声音效果</p>
<p style="TEXT-INDENT: 2em">&nbsp;&nbsp; &lt;mx:WipeDown&gt;从上往下消失或出现</p>
<p style="TEXT-INDENT: 2em">&nbsp;&nbsp; &lt;mx:WipeLeft&gt;从右往左消失或出现</p>
<p style="TEXT-INDENT: 2em">&nbsp;&nbsp; &lt;mx:WipeRight&gt;从左往右消失或出现</p>
<p style="TEXT-INDENT: 2em">&nbsp;&nbsp; &lt;mx:WipeUp&gt;从下往上消失或出现</p>
<p style="TEXT-INDENT: 2em">&nbsp;&nbsp; &lt;mx:Zoom&gt;放大或缩小</p>
<p style="TEXT-INDENT: 2em">&lt;/mx:Transition&gt;不同state切换时的过渡效果</p>
<p style="TEXT-INDENT: 2em">Charts(统计)</p>
<p style="TEXT-INDENT: 2em">&lt;mx:AreaChart&gt;是一种以面积作为表示方式</p>
<p style="TEXT-INDENT: 2em">&lt;mx:AxisRenderer&gt;是一种轴图,股票交易常以这种方式表示</p>
<p style="TEXT-INDENT: 2em">&lt;mx:BarChart&gt;是柱状图</p>
<p style="TEXT-INDENT: 2em">&lt;mx:BubbleChart&gt;气泡图</p>
<p style="TEXT-INDENT: 2em">&lt;mx:CandlestickChart&gt;一种比较有趣的图,"涨"跟"跌"的颜色会不一样</p>
<p style="TEXT-INDENT: 2em">&lt;mx:CategoryAxis&gt;跟AxisRenderer很像</p>
<p style="TEXT-INDENT: 2em">&lt;mx:ColumnChart&gt;跟&lt;mx:BarChart&gt;很像</p>
<p style="TEXT-INDENT: 2em">&lt;mx:DateTimeAxis&gt;以日期为轴的折线图</p>
<p style="TEXT-INDENT: 2em">&lt;mx:GridLines&gt;多条线图</p>
<p style="TEXT-INDENT: 2em">&lt;mx:HLOCChart&gt;跟AxisRenderer很像</p>
<p style="TEXT-INDENT: 2em">&lt;mx:Legend&gt;图例,离散的点</p>
<p style="TEXT-INDENT: 2em">&lt;mx:LinearAxis&gt;Axis系列</p>
<p style="TEXT-INDENT: 2em">&lt;mx:LineChart&gt;折线图</p>
<p style="TEXT-INDENT: 2em">&lt;mx:LogAxis&gt;Axis系列</p>
<p style="TEXT-INDENT: 2em">&lt;mx:PieChart&gt;饼图</p>
<p style="TEXT-INDENT: 2em">&lt;mx:PlotChart&gt;跟Legend很像</p>
<p style="TEXT-INDENT: 2em"></p>
</div>
<img src ="http://www.cnitblog.com/gavinkin555/aggbug/32880.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/gavinkin555/" target="_blank">gavinkin555</a> 2007-09-03 15:37 <a href="http://www.cnitblog.com/gavinkin555/articles/32880.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>动态创建LinkButton和传值</title><link>http://www.cnitblog.com/gavinkin555/articles/32881.html</link><dc:creator>gavinkin555</dc:creator><author>gavinkin555</author><pubDate>Mon, 03 Sep 2007 07:37:00 GMT</pubDate><guid>http://www.cnitblog.com/gavinkin555/articles/32881.html</guid><wfw:comment>http://www.cnitblog.com/gavinkin555/comments/32881.html</wfw:comment><comments>http://www.cnitblog.com/gavinkin555/articles/32881.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnitblog.com/gavinkin555/comments/commentRss/32881.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/gavinkin555/services/trackbacks/32881.html</trackback:ping><description><![CDATA[<div class="g_t_left c07 content" id=blogtext__fks_MBTX2BvGGKFwXQbx0w9FQiB6_FNMBe1B>
<p>找了好久终于在<strong>Adobe.Press.Advanced.ActionScript.3.with.Design.Patterns.Nov.2006.chm 这本书的第八章的最后一行里找到了. 累~~~</strong></p>
<p><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var i:int;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;for(i=0; i&lt;dp.length; i++)&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;var cb:LinkButton = new LinkButton();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;cb.label = dp[i].item_name;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;cb.data = dp[i].item_id;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;cb.setStyle("color","#ff00ff"); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;cb.addEventListener(MouseEvent.CLICK,modifyURL);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;panel.addChild(cb);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;</strong></p>
<p><strong>//从db里取值.</strong></p>
<p><strong>&nbsp;private function modifyURL(e:Event):void<br>&nbsp;&nbsp;&nbsp; {&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp; //Alert.show("----&gt;" +e.currentTarget.data);&nbsp;&nbsp;&nbsp; &nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp; var u:URLRequest = new URLRequest("control.mxml?a="+<font color=#ff0000>e.currentTarget.data</font>);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; navigateToURL(u,"_self"); <br>&nbsp;&nbsp;&nbsp; }&nbsp;</strong></p>
<p><strong>ok~ 可以回家了 . 阿阿阿阿~~~~~</strong></p>
</div>
<img src ="http://www.cnitblog.com/gavinkin555/aggbug/32881.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/gavinkin555/" target="_blank">gavinkin555</a> 2007-09-03 15:37 <a href="http://www.cnitblog.com/gavinkin555/articles/32881.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>FLEX的页面传值</title><link>http://www.cnitblog.com/gavinkin555/articles/32878.html</link><dc:creator>gavinkin555</dc:creator><author>gavinkin555</author><pubDate>Mon, 03 Sep 2007 07:36:00 GMT</pubDate><guid>http://www.cnitblog.com/gavinkin555/articles/32878.html</guid><wfw:comment>http://www.cnitblog.com/gavinkin555/comments/32878.html</wfw:comment><comments>http://www.cnitblog.com/gavinkin555/articles/32878.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnitblog.com/gavinkin555/comments/commentRss/32878.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/gavinkin555/services/trackbacks/32878.html</trackback:ping><description><![CDATA[<div class="g_t_left c07 content" id=blogtext__fks_Rdsf1_OqczK4V79Y1m4L-UzE3ZubkVKw>FLEX的页面传值<br><br>&lt;?xml version="1.0" encoding="utf-8"?&gt;<br>&lt;mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"&gt;<br>&nbsp; &nbsp; &lt;mx:Script&gt;<br>&nbsp; private function onclik():void<br>{<br>&nbsp; <br>&nbsp; &nbsp; navigateToURL(new URLRequest("requst_test.swf?a="+Textl.text), "quote");<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br>} <br><br>&lt;/mx:Script&gt;<br><br>&nbsp; &nbsp; <br>&nbsp; &nbsp; &lt;mx:Button x="186" y="202" label="Button" click="onclik();"/&gt;<br>&nbsp; &nbsp; &lt;mx:TextInput x="141" y="143" id="Textl"/&gt;<br>&nbsp; &nbsp; <br>&lt;/mx:Application&gt;<br><br><br><br>&lt;?xml version="1.0" encoding="utf-8"?&gt;<br>&lt;mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"<br>&nbsp; &nbsp; <br>&nbsp; &nbsp; <br>creationComplete="init();"&nbsp; &nbsp; &gt;<br>&lt;mx:Script&gt;<br>&nbsp; import mx.controls.Alert;<br>private function init():void<br>{<br>&nbsp; &nbsp; &nbsp; //Alert.show(this.parameters.a);<br>&nbsp; &nbsp; &nbsp; TextInput1.text=this.parameters.a;<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br>} <br><br><br>&lt;/mx:Script&gt;<br>&lt;mx:TextInput x="151" y="77" id="TextInput1"/&gt;<br><br>&lt;/mx:Application&gt;<br></div>
<img src ="http://www.cnitblog.com/gavinkin555/aggbug/32878.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/gavinkin555/" target="_blank">gavinkin555</a> 2007-09-03 15:36 <a href="http://www.cnitblog.com/gavinkin555/articles/32878.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ActionScript3.0 循环</title><link>http://www.cnitblog.com/gavinkin555/articles/32879.html</link><dc:creator>gavinkin555</dc:creator><author>gavinkin555</author><pubDate>Mon, 03 Sep 2007 07:36:00 GMT</pubDate><guid>http://www.cnitblog.com/gavinkin555/articles/32879.html</guid><wfw:comment>http://www.cnitblog.com/gavinkin555/comments/32879.html</wfw:comment><comments>http://www.cnitblog.com/gavinkin555/articles/32879.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/gavinkin555/comments/commentRss/32879.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/gavinkin555/services/trackbacks/32879.html</trackback:ping><description><![CDATA[<div class="g_t_left c07 content" id=blogtext__fks_kPbfbg4bB5G_tcjjQ-wX-kBYtzYqt7Nl>
<p style="TEXT-INDENT: 2em">ActionScript3.0（四）--循环ActionScript3.0中新添加了一个for each...in语句，循环中其他的变化基本上没有，虽然没有什么变化，还是将他写出来，以便初学as的朋友有所借鉴。</p>
<p style="TEXT-INDENT: 2em">&nbsp; 言归正传，下面开始介绍循环的变化：</p>
<p style="TEXT-INDENT: 2em">&nbsp; (1)for语句</p>
<p style="TEXT-INDENT: 2em">&nbsp; &nbsp; &nbsp; 它的用法和以前没有变化</p>
<p style="TEXT-INDENT: 2em">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var i=0;</p>
<p style="TEXT-INDENT: 2em">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; for(i=0;i&lt;5;i++){</p>
<p style="TEXT-INDENT: 2em">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; trace(i);&nbsp; &nbsp; //循环输出i值</p>
<p style="TEXT-INDENT: 2em">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }</p>
<p style="TEXT-INDENT: 2em">&nbsp; (2)while语句</p>
<p style="TEXT-INDENT: 2em">&nbsp; &nbsp; &nbsp; 它的用法也无变化，只是要甚用，易出现死循环</p>
<p style="TEXT-INDENT: 2em">&nbsp; &nbsp; &nbsp; &nbsp; var[color=#012]i=0;</p>
<p style="TEXT-INDENT: 2em">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [color=#01ff]while(i&lt;5){</p>
<p style="TEXT-INDENT: 2em">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; trace(i)&nbsp; &nbsp; &nbsp; [/color][/color] //循环输出i值;</p>
<p style="TEXT-INDENT: 2em">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; i++;</p>
<p style="TEXT-INDENT: 2em">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }</p>
<p style="TEXT-INDENT: 2em">&nbsp; (3)do..while语句</p>
<p style="TEXT-INDENT: 2em">&nbsp; &nbsp; &nbsp; 它的用法也无变化,循环一次，在进行判断</p>
<p style="TEXT-INDENT: 2em">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var i=5;</p>
<p style="TEXT-INDENT: 2em">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; do{</p>
<p style="TEXT-INDENT: 2em">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; trace(i)&nbsp; &nbsp; //循环输出i=5值;</p>
<p style="TEXT-INDENT: 2em">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; i++;</p>
<p style="TEXT-INDENT: 2em">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }while(i&lt;5);</p>
<p style="TEXT-INDENT: 2em">&nbsp; (4)for...in语句</p>
<p style="TEXT-INDENT: 2em">&nbsp; &nbsp; &nbsp; 循环输出对象中的属性值（不包括方法），数组中的元素。</p>
<p style="TEXT-INDENT: 2em">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 对象循环</p>
<p style="TEXT-INDENT: 2em">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var object:Object={x:20;y:30};</p>
<p style="TEXT-INDENT: 2em">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; for(var i:String in object){</p>
<p style="TEXT-INDENT: 2em">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; trace(i+":"+object[i])</p>
<p style="TEXT-INDENT: 2em">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }</p>
<p style="TEXT-INDENT: 2em">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //输出</p>
<p style="TEXT-INDENT: 2em">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //x:20</p>
<p style="TEXT-INDENT: 2em">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //x:30</p>
<p style="TEXT-INDENT: 2em">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 数组循环</p>
<p style="TEXT-INDENT: 2em">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var array:Array=["one","two","three"];</p>
<p style="TEXT-INDENT: 2em">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; for(var i:String in array){</p>
<p style="TEXT-INDENT: 2em">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; trace(array[i])</p>
<p style="TEXT-INDENT: 2em">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }</p>
<p style="TEXT-INDENT: 2em">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //输出</p>
<p style="TEXT-INDENT: 2em">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //one</p>
<p style="TEXT-INDENT: 2em">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //two</p>
<p style="TEXT-INDENT: 2em">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //three</p>
<p style="TEXT-INDENT: 2em">&nbsp; (5)for each...in语句</p>
<p style="TEXT-INDENT: 2em">&nbsp; &nbsp; &nbsp; as3.0中新添加的语句，和for..in有些相同，不同的是for each...in的变量包含值并通过属性替换属性名</p>
<p style="TEXT-INDENT: 2em">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var object:Object={x:20,y:30}</p>
<p style="TEXT-INDENT: 2em">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; for each(var i in object){</p>
<p style="TEXT-INDENT: 2em">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; trace(i)</p>
<p style="TEXT-INDENT: 2em">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }</p>
<p style="TEXT-INDENT: 2em">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //输出&nbsp; </p>
<p style="TEXT-INDENT: 2em">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //20</p>
<p style="TEXT-INDENT: 2em">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //30</p>
<p style="TEXT-INDENT: 2em">&nbsp; &nbsp; &nbsp; 你也能构重复循环XML或者XMLLIST对象，请看下面的例子</p>
<p style="TEXT-INDENT: 2em">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var myxml:XML=&lt;users&gt;</p>
<p style="TEXT-INDENT: 2em">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;fname&gt;Jackal&lt;/fname&gt;</p>
<p style="TEXT-INDENT: 2em">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;fname&gt;krean&lt;/fname&gt;</p>
<p style="TEXT-INDENT: 2em">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;fname&gt;playboy&lt;/fname&gt;</p>
<p style="TEXT-INDENT: 2em">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;/users&gt;;</p>
<p style="TEXT-INDENT: 2em">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; for each(var item in myxml.users){</p>
<p style="TEXT-INDENT: 2em">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; trace(item)</p>
<p style="TEXT-INDENT: 2em">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }</p>
<p style="TEXT-INDENT: 2em">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //输出</p>
<p style="TEXT-INDENT: 2em">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //Jackal</p>
<p style="TEXT-INDENT: 2em">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //krean</p>
<p style="TEXT-INDENT: 2em">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //playboy</p>
<p style="TEXT-INDENT: 2em">&nbsp; &nbsp; &nbsp; &nbsp; 它也允许你循环数组中的元素，请看下面的例子</p>
<p style="TEXT-INDENT: 2em">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var array:Array=["one","two","three"];</p>
<p style="TEXT-INDENT: 2em">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; for each(var i in array){</p>
<p style="TEXT-INDENT: 2em">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; trace(i);</p>
<p style="TEXT-INDENT: 2em">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }</p>
<p style="TEXT-INDENT: 2em">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //输出</p>
<p style="TEXT-INDENT: 2em">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //one</p>
<p style="TEXT-INDENT: 2em">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //two</p>
<p style="TEXT-INDENT: 2em">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //three</p>
<p style="TEXT-INDENT: 2em">&nbsp; &nbsp; 以上关于循环在ActionScript3.0中的变化，还有添加语句，如果有需要开进的请大家不要吝惜打字，多提意见</p>
<p style="TEXT-INDENT: 2em"></p>
</div>
<img src ="http://www.cnitblog.com/gavinkin555/aggbug/32879.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/gavinkin555/" target="_blank">gavinkin555</a> 2007-09-03 15:36 <a href="http://www.cnitblog.com/gavinkin555/articles/32879.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>flex2 FileReference download</title><link>http://www.cnitblog.com/gavinkin555/articles/32877.html</link><dc:creator>gavinkin555</dc:creator><author>gavinkin555</author><pubDate>Mon, 03 Sep 2007 07:35:00 GMT</pubDate><guid>http://www.cnitblog.com/gavinkin555/articles/32877.html</guid><wfw:comment>http://www.cnitblog.com/gavinkin555/comments/32877.html</wfw:comment><comments>http://www.cnitblog.com/gavinkin555/articles/32877.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/gavinkin555/comments/commentRss/32877.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/gavinkin555/services/trackbacks/32877.html</trackback:ping><description><![CDATA[<div class="g_t_left c07 content" id=blogtext__fks_h1MquhS3yGXbspofSNFSQdNPYFt2IGaK>
<p>&lt;?xml version="1.0" encoding="utf-8"?&gt;<br>&lt;mx:Application xmlns:mx="<a href="http://www.adobe.com/2006/mxml"><font color=#268ba9>http://www.adobe.com/2006/mxml</font></a>" layout="absolute"&gt;<br>&nbsp;<br>&nbsp;&lt;mx:Script&gt;<br>&nbsp;&nbsp;&lt;![CDATA[<br>&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp; public var fileRe:FileReference=new FileReference()&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp; private var file:FileReference;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp; private var currentAction:String;<br>&nbsp;&nbsp;&nbsp;&nbsp; private var downloadURL:URLRequest;<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp; private function download():void{&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp; var <a href="http://gavinkin555.blog.163.com/blog/edit/URLRequest=new"><font color=#268ba9>url:URLRequest=new</font></a> URLRequest("<a href="http://localhost:8000/flex_fileupload/upload/handanda.txt"><font color=#268ba9>http://localhost:8000/flex_fileupload/upload/handanda.txt</font></a>");<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; file = new FileReference();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fileRe.addEventListener(Event.COMPLETE,comple) <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fileRe.addEventListener(ProgressEvent.PROGRESS,jindu)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fileRe.download(url)</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp; private function jindu(e:ProgressEvent):void{<br>&nbsp;&nbsp;&nbsp;&nbsp; var load:Number=e.bytesLoaded<br>&nbsp;&nbsp;&nbsp;&nbsp; var toal:Number=e.bytesTotal<br>&nbsp;&nbsp;&nbsp;&nbsp; var per:Number=Math.round(load/toal*100)<br>&nbsp;&nbsp;&nbsp;&nbsp; trace(per)<br>&nbsp;&nbsp;//tex.text=String(per)<br>&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp; private function comple(e:Event):void{<br>&nbsp;&nbsp;&nbsp;&nbsp; tex.text="已下载完成!"<br>&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;]]&gt;<br>&nbsp;&lt;/mx:Script&gt;<br>&nbsp;<br>&nbsp;&lt;mx:Button&nbsp; x="10" y="20" label="下载一个文件" click="download()"/&gt;<br>&nbsp;&lt;mx:ProgressBar x="10" y="100" id="progress" source="fileRe" label="已加载: %3%%"/&gt;<br>&nbsp;&lt;mx:Text text="" x="10" y="105" id="tex"/&gt;</p>
<p>&lt;/mx:Application&gt;</p>
</div>
<img src ="http://www.cnitblog.com/gavinkin555/aggbug/32877.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/gavinkin555/" target="_blank">gavinkin555</a> 2007-09-03 15:35 <a href="http://www.cnitblog.com/gavinkin555/articles/32877.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Flex 2.0 从零开始实现文件上传</title><link>http://www.cnitblog.com/gavinkin555/articles/32876.html</link><dc:creator>gavinkin555</dc:creator><author>gavinkin555</author><pubDate>Mon, 03 Sep 2007 07:34:00 GMT</pubDate><guid>http://www.cnitblog.com/gavinkin555/articles/32876.html</guid><wfw:comment>http://www.cnitblog.com/gavinkin555/comments/32876.html</wfw:comment><comments>http://www.cnitblog.com/gavinkin555/articles/32876.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/gavinkin555/comments/commentRss/32876.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/gavinkin555/services/trackbacks/32876.html</trackback:ping><description><![CDATA[<div class="g_t_left c07 content" id=blogtext__fks_YmeqdQaSIz-b634LHFpo_UN286CYCjA_>1． 环境的安装以及配置就不说了，网上很多地方可以找到。（我的是：JDK1.4.2，Flex Builder 2，Flex 2 SDK，Tomcat 4.1，Eclips3.0.1，不过据说现在Flex 2.0要使用RemoteObject的话需要安装JDK1.5）。<br><br>2． 首先在Eclips中创建一个tomcat工程，例如取名为FileUpload。<br><br>3． 找到Flex SDK安装目录，将flex.war拷贝出来更名为flex.rar。解开这个包。将里面的META-INF 以及WEB-INF文件夹拷贝到Eclips的工作目录（我的是：d:workspaces）----即刚才创建的FileUpload目录下。<br><br>4． Flex Builder 2下创建一个新的工程。具体步骤如图。<br><br>5． 工程中引入common-fileupload-1.1.1.jar以及common-io-1.2.jar（没有的话去http://www.apache.org下载）。<br><br>6． 编写上传servlet&nbsp;&nbsp;myUpload.java&nbsp;&nbsp;代码如下(上传文件存放路径为：d:upload)：<br><br>package com.fileupload;<br><br>import java.io.File;<br>import java.io.IOException;<br>import java.util.Iterator;<br>import java.util.List;<br><br>import javax.servlet.ServletException;<br>import javax.servlet.http.HttpServlet;<br>import javax.servlet.http.HttpServletRequest;<br>import javax.servlet.http.HttpServletResponse;<br><br>import org.apache.commons.fileupload.FileItem;<br>import org.apache.commons.fileupload.FileUploadException;<br>import org.apache.commons.fileupload.disk.DiskFileItemFactory;<br>import org.apache.commons.fileupload.servlet.ServletFileUpload;<br><br>public class myUpload extends HttpServlet {<br><br>private String uploadPath = "D:\\upload\\";<br>private int maxPostSize = 100 * 1024 * 1024;<br><br>public void doPost(HttpServletRequest req, HttpServletResponse res)<br>&nbsp;&nbsp; throws ServletException, IOException {<br>&nbsp;&nbsp;res.setContentType("text/html; charset=UTF-8");<br>&nbsp;&nbsp;<br>&nbsp;&nbsp;DiskFileItemFactory factory = new DiskFileItemFactory();<br>&nbsp;&nbsp;factory.setSizeThreshold(4096);<br><br>&nbsp;&nbsp;ServletFileUpload upload = new ServletFileUpload(factory);<br>&nbsp;&nbsp;upload.setSizeMax(maxPostSize);<br>&nbsp;&nbsp;try {<br>&nbsp;&nbsp; List fileItems = upload.parseRequest(req);<br>&nbsp;&nbsp; Iterator iter = fileItems.iterator();<br>&nbsp;&nbsp; while (iter.hasNext()) {<br>&nbsp;&nbsp;&nbsp;&nbsp;FileItem item = (FileItem) iter.next();<br>&nbsp;&nbsp;&nbsp;&nbsp;if (!item.isFormField()) {<br>&nbsp;&nbsp;&nbsp;&nbsp; String name = item.getName();<br>&nbsp;&nbsp;&nbsp;&nbsp; try {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;item.write(new File(uploadPath + name));<br>&nbsp;&nbsp;&nbsp;&nbsp; } catch (Exception e) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br>&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp; }<br>&nbsp;&nbsp;} catch (FileUploadException e) {<br>&nbsp;&nbsp; e.printStackTrace();<br>&nbsp;&nbsp;}<br><br>}<br>}<br><br>存放在../src/com/fileupload<br><br>7． 在web.xml中加入如下代码。（用于调用servlet）<br><br>&lt;servlet&gt;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;servlet-name&gt;myUpload&lt;/servlet-name&gt;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;display-name&gt;File Upload Servlet&lt;/display-name&gt;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;description&gt;File Servlet Example&lt;/description&gt;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;servlet-class&gt;com.fileupload.myUpload&lt;/servlet-class&gt;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&lt;/servlet&gt;<br><br><br><br>&lt;servlet-mapping&gt;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;servlet-name&gt;myUpload&lt;/servlet-name&gt;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;url-pattern&gt;/myUpload&lt;/url-pattern&gt;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&lt;/servlet-mapping&gt;<br><br>8． 前台的FileUpload.mxml文件代码如下：<br><br>&lt;?xml version="1.0" encoding="utf-8"?&gt;<br>&lt;mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"<br>xmlns="*" creationComplete="init()"&gt;<br><br>&lt;mx:Script&gt;<br>&nbsp;&nbsp;&lt;![CDATA[<br>&nbsp;&nbsp; import flash.events.*;<br>&nbsp;&nbsp; import flash.net.FileReference;<br>&nbsp;&nbsp; import flash.net.URLRequest;<br><br>&nbsp;&nbsp; private var currentAction:String;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private var uploadURL:URLRequest;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private var file:FileReference;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private var fileName:String;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;private function init() : void{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;file = new FileReference();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public function FileReference_browse() : void {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;currentAction = "upload";<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; uploadURL = new URLRequest();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; file = new FileReference();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; configureListeners(file);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; file.browse();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private function configureListeners(dispatcher:IEventDispatcher):void {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dispatcher.addEventListener(Event.SELECT, selectHandler);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private function selectHandler(event:Event):void {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var file:FileReference = FileReference(event.target);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(currentAction == "upload"){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;uploadURL.url = "myUpload?path=work&amp;filename=" + file.name;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;file.upload(uploadURL);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br><br>&nbsp;&nbsp;]]&gt;<br>&lt;/mx:Script&gt;<br><br>&lt;mx:Panel width="100%" height="100%"&gt;<br>&nbsp;&nbsp;&lt;mx:VBox width="100%" horizontalAlign="center"&gt;<br>&nbsp;&nbsp; &lt;mx:Label text="Click the below button to select a file which you want to upload!" /&gt;<br>&nbsp;&nbsp; &lt;mx:Button label="Upload" click="FileReference_browse()" /&gt;<br>&nbsp;&nbsp;&lt;/mx:VBox&gt;<br>&lt;/mx:Panel&gt;<br><br>&lt;/mx:Application&gt;<br><br>9． 开启tomcat，运行。大功告成！<br></div>
<img src ="http://www.cnitblog.com/gavinkin555/aggbug/32876.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/gavinkin555/" target="_blank">gavinkin555</a> 2007-09-03 15:34 <a href="http://www.cnitblog.com/gavinkin555/articles/32876.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Flex与XMl通信研究 </title><link>http://www.cnitblog.com/gavinkin555/articles/32875.html</link><dc:creator>gavinkin555</dc:creator><author>gavinkin555</author><pubDate>Mon, 03 Sep 2007 07:33:00 GMT</pubDate><guid>http://www.cnitblog.com/gavinkin555/articles/32875.html</guid><wfw:comment>http://www.cnitblog.com/gavinkin555/comments/32875.html</wfw:comment><comments>http://www.cnitblog.com/gavinkin555/articles/32875.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/gavinkin555/comments/commentRss/32875.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/gavinkin555/services/trackbacks/32875.html</trackback:ping><description><![CDATA[<table>
    <tbody>
        <tr>
            <td>
            <p>&#160;</p>
            <p style="TEXT-INDENT: 2em">最近一直在网上转悠，网上的flex文章越来越多了，但是都使一些关于DB、控件、httpservice之类的文章，其实flex以xml作为数据源来进行操作，也是比较重要的。 </p>
            <p style="TEXT-INDENT: 2em">正好前一阵子在研究E4X与Flex的关系，所以打算总结一下，有说的不对的地方，还请大家多多原谅。</p>
            <p style="TEXT-INDENT: 2em">一、最简单模式：Flex通过httpservice和dataProvider进行数据传输</p>
            <p style="TEXT-INDENT: 2em"></p>
            <p style="TEXT-INDENT: 2em">&nbsp;</p>
            <p style="TEXT-INDENT: 2em">Xml格式如下：</p>
            <p style="TEXT-INDENT: 2em">&lt;?xml version="1.0" encoding="utf-8" ?&gt; </p>
            <p style="TEXT-INDENT: 2em">&lt;Result&gt;</p>
            <p style="TEXT-INDENT: 2em">&lt;NodeA&gt;value1&lt;/NodeA&gt;</p>
            <p style="TEXT-INDENT: 2em">&lt;NodeB&gt;valve2&lt;/NodeB&gt;</p>
            <p style="TEXT-INDENT: 2em">&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;</p>
            <p style="TEXT-INDENT: 2em">&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;</p>
            <p style="TEXT-INDENT: 2em">&lt;/Result&gt;</p>
            <p style="TEXT-INDENT: 2em">在Flex中有一个DataGrid，这样就可以用httpservice来使DataGrid获取xml的数据了。</p>
            <p style="TEXT-INDENT: 2em">Flex端如下：</p>
            <p style="TEXT-INDENT: 2em">&lt;?xml version="1.0" encoding="utf-8"?&gt;&nbsp;&nbsp;&nbsp; </p>
            <p style="TEXT-INDENT: 2em">&lt;mx:TitleWindow xmlns:mx="http://www.adobe.com/2006/mxml" </p>
            <p style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; title="Blog Details"&gt; </p>
            <p style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; &lt;mx:HTTPService showBusyCursor="true" url="http://localhost:8080/text.xml"/ id=&#8221;xmlRecord&#8221;&gt; </p>
            <p style="TEXT-INDENT: 2em">&lt;mx:DataGrid width="712" height="338" dataProvider="{xmlRecord.lastResult.Result}"&gt; </p>
            <p style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;mx:columns&gt; </p>
            <p style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;mx:DataGridColumn headerText="SectionA" dataField="NodeA " width="400" /&gt; </p>
            <p style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;mx:DataGridColumn headerText="SectionB" dataField="NodeB" width="30"/&gt; </p>
            <p style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。</p>
            <p style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/mx:columns&gt; </p>
            <p style="TEXT-INDENT: 2em">&lt;/mx:DataGrid&gt; </p>
            <p style="TEXT-INDENT: 2em">&nbsp;</p>
            <p style="TEXT-INDENT: 2em">&lt;/mx:TitleWindow&gt;</p>
            <p style="TEXT-INDENT: 2em">&nbsp;</p>
            <p style="TEXT-INDENT: 2em">+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ </p>
            <p style="TEXT-INDENT: 2em">※&nbsp;&nbsp;&nbsp;&nbsp; 其中红字部分必须一直，由于这个sample比较简单，所以kenshin就不深入研究了。</p>
            <p style="TEXT-INDENT: 2em">※&nbsp;&nbsp;&nbsp;&nbsp; 黄字部分一定要按照xml的结构书写。</p>
            <p style="TEXT-INDENT: 2em">这样在run 这个Flex的时候，在DataGrid中就会显示NodeA＆NodeB的内容即value1＆value2</p>
            <p style="TEXT-INDENT: 2em">二、稍微复杂一些模式</p>
            <p style="TEXT-INDENT: 2em">Xml端代码如下：</p>
            <p style="TEXT-INDENT: 2em">&lt;?xml version="1.0" encoding="UTF-8" ?&gt; </p>
            <p style="TEXT-INDENT: 2em">&lt;rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/"&gt; </p>
            <p style="TEXT-INDENT: 2em">&lt;channel&gt; </p>
            <p style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; &lt;title&gt;value1&lt;/title&gt; </p>
            <p style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; &lt;link&gt;http://www.k-zone.cn/zblog&lt;/link&gt; </p>
            <p style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; &lt;description&gt;关注Flex,Java,DotNet,Web Desgin&lt;/description&gt; </p>
            <p style="TEXT-INDENT: 2em">。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。</p>
            <p style="TEXT-INDENT: 2em">&lt;/channel&gt; </p>
            <p style="TEXT-INDENT: 2em">&lt;/rss&gt; </p>
            <p style="TEXT-INDENT: 2em">Flex端如下：</p>
            <p style="TEXT-INDENT: 2em">&lt;?xml version="1.0" encoding="utf-8"?&gt; </p>
            <p style="TEXT-INDENT: 2em">&lt;mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" </p>
            <p style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; layout="absolute" </p>
            <p style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; creationComplete="feedRequest.send()" &gt; </p>
            <p style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; &lt;mx:HTTPService </p>
            <p style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; id="feedRequest" </p>
            <p style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; url=" http://localhost:8080/text.xml" </p>
            <p style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; useProxy="false" /&gt; </p>
            <p style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; &lt;mx:Panel x="10" y="10" width="475" height="400" layout="absolute" </p>
            <p style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; title="{feedRequest.lastResult.rss.channel.title}"&gt; </p>
            <p style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; &lt;/mx:Panel&gt; </p>
            <p style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; 。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。</p>
            <p style="TEXT-INDENT: 2em">&lt;/mx:Application&gt; </p>
            <p style="TEXT-INDENT: 2em">&nbsp;</p>
            <p style="TEXT-INDENT: 2em">如果想要得到上面的xml中title的值，只需按照蓝字部分书写即可得到Title的value。</p>
            <p style="TEXT-INDENT: 2em">以此类推如果想要得到xml中link的内容，应该按如下书写</p>
            <p style="TEXT-INDENT: 2em">feedRequest.lastResult.rss.channel.link </p>
            <p style="TEXT-INDENT: 2em">&nbsp;</p>
            <p style="TEXT-INDENT: 2em">三、复杂一些的模式，即xml的格式比较特殊</p>
            <p style="TEXT-INDENT: 2em">Xml端代码如下：</p>
            <p style="TEXT-INDENT: 2em">&lt;?xml version="1.0" encoding="utf-8"?&gt; </p>
            <p style="TEXT-INDENT: 2em">&lt;Result&gt; </p>
            <p style="TEXT-INDENT: 2em">&lt;SectionA SubSectionA1=&#8221;value1&#8221; SubSectionA2=&#8221;value2&#8221;/&gt; </p>
            <p style="TEXT-INDENT: 2em">&lt;SectinB SubSectionB1=&#8221;value3&#8221; SubSectionB2=&#8221;value4&#8221;/&gt;</p>
            <p style="TEXT-INDENT: 2em">。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。</p>
            <p style="TEXT-INDENT: 2em">&lt;/esult&gt; </p>
            <p style="TEXT-INDENT: 2em">如果大家想要得到SubSectionA1的内容，就显得无从下手了。其实用E4X在actionscript3中已经支持的非常完美了。并且Flex builder2提供的help也有这样的例子。但是我找了一下，没有这样的例子，所以自己研究了一下。并且把结果告诉大家。</p>
            <p style="TEXT-INDENT: 2em">要显示SubSectionA1的内容。Flex端如下书写：</p>
            <p style="TEXT-INDENT: 2em">var loader:URLLoader = new URLLoader(); </p>
            <p style="TEXT-INDENT: 2em">var request:URLRequest = new URLRequest("data/sampleData.xml"); </p>
            <p style="TEXT-INDENT: 2em">loader.load(request); </p>
            <p style="TEXT-INDENT: 2em">loader.addEventListener(Event.COMPLETE, onComplete); </p>
            <p style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } </p>
            <p style="TEXT-INDENT: 2em">public function onComplete(event:Event):void { </p>
            <p style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; var externalXML:XML; </p>
            <p style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; var loader:URLLoader = URLLoader(event.target); </p>
            <p style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; externalXML = new XML(loader.data); </p>
            <p style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; trace(externalXML. SectionA [0].@ SubSectionA1); </p>
            <p style="TEXT-INDENT: 2em">} </p>
            <p style="TEXT-INDENT: 2em">其中粗体红字SubSectionA1的内容了。其中externalXML. SectionA [0].@ SubSectionA1中的[0]是xml的record的条数。@后面的就是想要得到的子节点的值。其内容可以是SubSectionA2、SubSectionB等等的值。部分就是</p>
            <p style="TEXT-INDENT: 2em"></p>
            <p style="TEXT-INDENT: 2em">&nbsp;</p>
            <p style="TEXT-INDENT: 2em">关于xml的格式在继续引伸一下。以下的格式</p>
            <p style="TEXT-INDENT: 2em">&lt;?xml version="1.0" encoding="utf-8"?&gt; </p>
            <p style="TEXT-INDENT: 2em">&lt;Result&gt; </p>
            <p style="TEXT-INDENT: 2em">&lt;SectionA SubSectionA1=&#8221;value1&#8221;/&gt; </p>
            <p style="TEXT-INDENT: 2em">。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。</p>
            <p style="TEXT-INDENT: 2em">&lt;/Result&gt; </p>
            <p style="TEXT-INDENT: 2em">&nbsp;</p>
            <p style="TEXT-INDENT: 2em">相当于如下的格式：</p>
            <p style="TEXT-INDENT: 2em">&lt;?xml version="1.0" encoding="utf-8"?&gt; </p>
            <p style="TEXT-INDENT: 2em">&lt;Result&gt; </p>
            <p style="TEXT-INDENT: 2em">&lt;SectionA&gt; </p>
            <p style="TEXT-INDENT: 2em">&lt;SubSectionA1&gt;value1&#8221;&lt;/ SubSectionA1&gt; </p>
            <p style="TEXT-INDENT: 2em">&lt;/SectionA&gt; </p>
            <p style="TEXT-INDENT: 2em">。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。</p>
            <p style="TEXT-INDENT: 2em">&lt;/Result&gt; </p>
            <p style="TEXT-INDENT: 2em"></p>
            </td>
        </tr>
    </tbody>
</table>
Flex与JavaScript的交互：调用JavaScipt或者被JavaScript调用 flex1.5
<p style="TEXT-INDENT: 2em">2006-11-28 10:36</p>
<p style="TEXT-INDENT: 2em">
<table>
    <tbody>
        <tr>
            <td>
            <p>&#160;</p>
            <p style="TEXT-INDENT: 2em">一、在Javascript中调用Flex方法 </p>
            <p style="TEXT-INDENT: 2em">在Flex中可以用ExternalInterface来调用Flex的方法，途径是通过在Flex应用可调用方法列表中添加指定的公用方法。在Flex应用中通过调用addCallback()可以把一个方法添加到此列表中。addCallback将一个Actionscript的方法注册为一个Javascript和VBscript可以调用的方法。 </p>
            <p style="TEXT-INDENT: 2em">addCallback()函数的定义如下： </p>
            <p style="TEXT-INDENT: 2em">addCallback(function_name:String, closure:Function):void </p>
            <p style="TEXT-INDENT: 2em">function_name参数就是在Html页面中脚本调用的方法名。closure参数是要调用的本地方法，这个参数可以是一个方法也可以是对象实例。 </p>
            <p style="TEXT-INDENT: 2em">举个例子： </p>
            <p style="TEXT-INDENT: 2em">&lt;mx:script&gt; </p>
            <p style="TEXT-INDENT: 2em">import flash.external.*; </p>
            <p style="TEXT-INDENT: 2em">public function myFunc():Number { </p>
            <p style="TEXT-INDENT: 2em">return 42; </p>
            <p style="TEXT-INDENT: 2em">} </p>
            <p style="TEXT-INDENT: 2em">public function initApp():void { </p>
            <p style="TEXT-INDENT: 2em">ExternalInterface.addCallback("myFlexFunction",myFunc); </p>
            <p style="TEXT-INDENT: 2em">} </p>
            <p style="TEXT-INDENT: 2em">&lt;/mx:script&gt; </p>
            <p style="TEXT-INDENT: 2em">那么在Html页面中，先获得SWF对象的引用，也就是用&lt;object .../&gt;声明的Swf的Id属性，比如说是MyFlexApp。然后就可以用以下方式调用Flex中的方法。 </p>
            <p style="TEXT-INDENT: 2em">&lt;script language='Javascript' charset='utf-8'&gt; </p>
            <p style="TEXT-INDENT: 2em">function callApp() { </p>
            <p style="TEXT-INDENT: 2em">var x = MyFlexApp.myFlexFunction(); </p>
            <p style="TEXT-INDENT: 2em">alert(x); </p>
            <p style="TEXT-INDENT: 2em">} </p>
            <p style="TEXT-INDENT: 2em">&lt;/script&gt; </p>
            <p style="TEXT-INDENT: 2em">&lt;button onclick="callApp()"&gt;Call App&lt;/button&gt; </p>
            <p style="TEXT-INDENT: 2em">二、在Flex中调用 Javascript</p>
            <p style="TEXT-INDENT: 2em">你可以调用Html页面中的Javascript，通过与Javascript的交互，可以改变Style，调用远程方法。还可以将数据传递给Html页面，处理后再返回给Flex，完成这样的功能主要有两种方法：ExternalInterface()和navigateToUrl()。 </p>
            <p style="TEXT-INDENT: 2em">在Flex中调用Javascript最简单的方法是使用ExternalInterface()，可以使用此API调用任意Javascript，传递参数，获得返回值，如果调用失败，Flex抛出一个异常。 </p>
            <p style="TEXT-INDENT: 2em">ExternalInterface封装了对浏览器支持的检查，可以用available属性来查看。 </p>
            <p style="TEXT-INDENT: 2em">ExternalInterface的使用非常简单，语法如下： </p>
            <p style="TEXT-INDENT: 2em">flash.external.ExternalInterface.call(function_name: String[, arg1, ...]):Object; </p>
            <p style="TEXT-INDENT: 2em">参数function_name是要调用的Javascript的函数名，后面的参数是Javascript需要的参数。 </p>
            <p style="TEXT-INDENT: 2em">举个例子说明如何调用Javascript函数 </p>
            <p style="TEXT-INDENT: 2em">Flex应用中，添加如下方法： </p>
            <p style="TEXT-INDENT: 2em">&lt;mx:script&gt; </p>
            <p style="TEXT-INDENT: 2em">&lt;?xml version="1.0" encoding="iso-8859-1"?&gt; </p>
            <p style="TEXT-INDENT: 2em">&lt;mx:Application xmlns:mx="<img src="http://www.flexbbs.com/images/skin/small/url.gif" border=0><a href="http://www.adobe.com/2006/mxml"><font color=#268ba9>http://www.adobe.com/2006/mxml</font></a>"&gt; </p>
            <p style="TEXT-INDENT: 2em">&lt;mx:script&gt; </p>
            <p style="TEXT-INDENT: 2em">import flash.external.*; </p>
            <p style="TEXT-INDENT: 2em">public function callWrapper():void { </p>
            <p style="TEXT-INDENT: 2em">var f:String = "changeDocumentTitle"; </p>
            <p style="TEXT-INDENT: 2em">var m:String = ExternalInterface.call(f,"New Title"); </p>
            <p style="TEXT-INDENT: 2em">trace(m); </p>
            <p style="TEXT-INDENT: 2em">} </p>
            <p style="TEXT-INDENT: 2em">&lt;/mx:script&gt; </p>
            <p style="TEXT-INDENT: 2em">&lt;mx:Button label="Change Document Title" click="callWrapper()"/&gt; </p>
            <p style="TEXT-INDENT: 2em">&lt;/mx:Application&gt; </p>
            <p style="TEXT-INDENT: 2em">Html页面中有如下函数定义： </p>
            <p style="TEXT-INDENT: 2em">&lt;script LANGUAGE="Javascript"&gt; </p>
            <p style="TEXT-INDENT: 2em">function changeDocumentTitle(a) { </p>
            <p style="TEXT-INDENT: 2em">window.document.title=a; </p>
            <p style="TEXT-INDENT: 2em">return "successful"; </p>
            <p style="TEXT-INDENT: 2em">} </p>
            </td>
        </tr>
    </tbody>
</table>
</p>
<img src ="http://www.cnitblog.com/gavinkin555/aggbug/32875.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/gavinkin555/" target="_blank">gavinkin555</a> 2007-09-03 15:33 <a href="http://www.cnitblog.com/gavinkin555/articles/32875.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>最简单的flex + java + mysql</title><link>http://www.cnitblog.com/gavinkin555/articles/32871.html</link><dc:creator>gavinkin555</dc:creator><author>gavinkin555</author><pubDate>Mon, 03 Sep 2007 07:13:00 GMT</pubDate><guid>http://www.cnitblog.com/gavinkin555/articles/32871.html</guid><wfw:comment>http://www.cnitblog.com/gavinkin555/comments/32871.html</wfw:comment><comments>http://www.cnitblog.com/gavinkin555/articles/32871.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/gavinkin555/comments/commentRss/32871.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/gavinkin555/services/trackbacks/32871.html</trackback:ping><description><![CDATA[<div class="g_t_left c07 content" id=blogtext__fks_xjL6MJRIiiT1tI9broBgsnSHqS0gATYA>
<p><strong>第一步：创建数据库</strong><br><strong>第二步：在JAVA中编写获取公告的代码<br><br></strong>首先，我们要创建一个公告类来专门保存获取的公告信息，代码如下。<br>NoticeInfo.java</p>
<p><br>package com;</p>
<p><br>public class NoticeInfo {<br>&nbsp;<br>&nbsp;private String userid;<br>&nbsp;private String username;<br>&nbsp;private String contents;<br>&nbsp;private String dates;<br>&nbsp;<br>&nbsp;<br>&nbsp;public String getContents() {<br>&nbsp;&nbsp;return contents;<br>&nbsp;}<br>&nbsp;public void setContents(String contents) {<br>&nbsp;&nbsp;this.contents = contents;<br>&nbsp;}<br>&nbsp;public String getDates() {<br>&nbsp;&nbsp;return dates;<br>&nbsp;}<br>&nbsp;public void setDates(String dates) {<br>&nbsp;&nbsp;this.dates = dates;<br>&nbsp;}<br>&nbsp;<br>&nbsp;<br>&nbsp;public String getUserid() {<br>&nbsp;&nbsp;return userid;<br>&nbsp;}<br>&nbsp;public void setUserid(String userid) {<br>&nbsp;&nbsp;this.userid = userid;<br>&nbsp;}<br>&nbsp;public String getUsername() {<br>&nbsp;&nbsp;return username;<br>&nbsp;}<br>&nbsp;public void setUsername(String username) {<br>&nbsp;&nbsp;this.username = username;<br>&nbsp;}<br>&nbsp;<br>&nbsp;<br>}</p>
<p>创建好这个之后我们要创建一个数据查询类：DataServiceImpl.java 来查询数据库，并将查询结果传给将要创建的Flex程序。由于我们不清楚有多少条记录，所以就借助一下JAVA中的ArrayList这个类，它位于java.util 包中。先创建一个ArrayList：<br></p>
<p style="TEXT-INDENT: 2em">程序代码</p>
<p style="TEXT-INDENT: 2em">ArrayList noticeList = new ArrayList(); // 这里我没有用泛型，因为我用的JDK1.4.2.</p>
<p style="TEXT-INDENT: 2em">查询数据库之后，每读取一条记录就添加到 noticeList。<br></p>
<p style="TEXT-INDENT: 2em">程序代码</p>
<p style="TEXT-INDENT: 2em">while(rs.next()){</p>
<p style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;NoticeInfo temp = new NoticeInfo();</p>
<p style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;temp.setAuthor(rs.getString("author"));</p>
<p style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;temp.setContent(rs.getString("content"));</p>
<p style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;temp.setDates(rs.getDate("date"));</p>
<p style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;temp.setTitle(rs.getString("title"));</p>
<p style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;noticeList.add(temp);</p>
<p style="TEXT-INDENT: 2em">}</p>
<p style="TEXT-INDENT: 2em">查询完毕之后你就可以把这个noticeList传回去，你也可以传回去一个 NoticeInfo 数组：<br></p>
<p style="TEXT-INDENT: 2em">程序代码</p>
<p style="TEXT-INDENT: 2em">NoticeInfo[] notices = new NoticeInfo[noticeList.size()];</p>
<p style="TEXT-INDENT: 2em">for(int i=0;i&lt;noticeList.size();i++){</p>
<p style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;notices[i] = (NoticeInfo)noticeList.get(i);</p>
<p style="TEXT-INDENT: 2em">}</p>
<p style="TEXT-INDENT: 2em">return notices;</p>
<p style="TEXT-INDENT: 2em">我这里用的是后一种方法。如果你直接把noticeList传回去的话，记住一点，JAVA的ArrayList类型的对象到了Flex中会变成ArrayCollection类型的。<br><br>现在JAVA部分的代码就写好了。<br><br>DataServiceImpl.java 的全部代码如下：<br>package com;</p>
<p style="TEXT-INDENT: 2em">import java.sql.*;<br>import java.util.ArrayList;</p>
<p style="TEXT-INDENT: 2em">import com.ConnectionFactory;</p>
<p style="TEXT-INDENT: 2em">public class DataServiceImpl {<br>&nbsp;<br>&nbsp;String sql;&nbsp; // 定义类型<br>&nbsp;Connection conn = null;<br>&nbsp;Statement stmt = null;<br>&nbsp;ResultSet rs = null;<br>&nbsp;&nbsp;<br>&nbsp;public DataServiceImpl(){<br>&nbsp;&nbsp;<br>&nbsp;}<br>&nbsp;<br>&nbsp;<br>&nbsp;public NoticeInfo[] getNotices(){<br>&nbsp;&nbsp;<br>&nbsp;&nbsp;ArrayList noticeList = new ArrayList();<br>&nbsp;&nbsp;<br>&nbsp;&nbsp;try{<br>&nbsp;&nbsp;&nbsp;conn = ConnectionFactory.getConnection();<br>&nbsp;&nbsp;&nbsp;stmt = conn.createStatement();&nbsp;<br>&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;String sql = "select userid, username, contents, dates from gbook ";<br>&nbsp;&nbsp;&nbsp;System.out.println("this is =============&gt;" + sql);<br>&nbsp;&nbsp;&nbsp;System.out.println("connect to db is successful~~~");<br>&nbsp;&nbsp;&nbsp;rs = stmt.executeQuery(sql);&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;while(rs.next()){<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;NoticeInfo temp = new NoticeInfo();&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;temp.setUserid(rs.getString("userid"));<br>&nbsp;&nbsp;&nbsp;&nbsp;temp.setUsername(rs.getString("username"));<br>&nbsp;&nbsp;&nbsp;&nbsp;temp.setContents(rs.getString("contents"));<br>&nbsp;&nbsp;&nbsp;&nbsp;temp.setDates(rs.getString("dates"));<br>&nbsp;&nbsp;&nbsp;&nbsp;noticeList.add(temp);<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;NoticeInfo[] notices = new NoticeInfo[noticeList.size()];<br>&nbsp;&nbsp;&nbsp;for(int i=0;i &lt; noticeList.size();i++){<br>&nbsp;&nbsp;&nbsp;&nbsp;notices[i] = (NoticeInfo) noticeList.get(i);&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;return notices;<br>&nbsp;&nbsp;}catch(SQLException e){<br>&nbsp;&nbsp;&nbsp;e.printStackTrace();<br>&nbsp;&nbsp;&nbsp;return null;<br>&nbsp;&nbsp;}<br>&nbsp;}</p>
<p style="TEXT-INDENT: 2em">}<br></p>
<p style="TEXT-INDENT: 2em">package com;</p>
<p style="TEXT-INDENT: 2em">import java.sql.*; //调用SQL包</p>
<p style="TEXT-INDENT: 2em">public class ConnectionFactory {</p>
<p style="TEXT-INDENT: 2em">&nbsp;private static ConnectionFactory ref = new ConnectionFactory();<br>&nbsp;// 连接mysql数据库， database : test&nbsp; user : root&nbsp; password : 1272107226<br>&nbsp;private ConnectionFactory()<br>&nbsp;{<br>&nbsp;&nbsp;try{<br>&nbsp;&nbsp;&nbsp;Class.forName("com.mysql.jdbc.Driver");<br>&nbsp;&nbsp;}catch(ClassNotFoundException e)<br>&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;System.out.println("ERROR: exception loading driver class");<br>&nbsp;&nbsp;}<br>&nbsp;}<br>&nbsp;public static Connection getConnection() throws SQLException{<br>&nbsp;&nbsp;<br>&nbsp;&nbsp;String url = new String ("jdbc:mysql://localhost:3306/test?user=root&amp;password=1272107226");<br>&nbsp;&nbsp;return DriverManager.getConnection(url);<br>&nbsp;}<br>&nbsp;<br>&nbsp;public static void close(ResultSet rs)<br>&nbsp;{<br>&nbsp;&nbsp;try{<br>&nbsp;&nbsp;&nbsp;rs.close();<br>&nbsp;&nbsp;}catch(Exception ignored){}<br>&nbsp;}<br>&nbsp;public static void close(Statement stmt)<br>&nbsp;{<br>&nbsp;&nbsp;try{<br>&nbsp;&nbsp;&nbsp;stmt.close();<br>&nbsp;&nbsp;}catch(Exception ignored){}<br>&nbsp;}<br>&nbsp;public static void close(Connection conn)<br>&nbsp;{<br>&nbsp;&nbsp;try{<br>&nbsp;&nbsp;&nbsp;conn.close();<br>&nbsp;&nbsp;}catch(Exception ignored){}<br>&nbsp;}<br>&nbsp;<br>}<br></p>
<p style="TEXT-INDENT: 2em"><strong>第三步： 配置Flex Data Service<br><br></strong>1，把刚才写的JAVA文件编译。打开FDS的安装文件夹，将编译的文件拷贝到\jrun4\servers\default\flex\WEB-INF\classes 文件夹中，进行下面的配置。<br><br>2.打开FDS的安装文件夹。进入 jrun4\servers\default\flex\WEB-INF\flex 目录。里面是关于Flex Data Service 的配置文件，我们这里只看RemoteObject如何配置，其它配置信息请自己看帮助。现在我们打开里面的 remoting-config.xml 文件。向里面添加如下信息，作为&lt;service&gt;的子标签：<br><br></p>
<p style="TEXT-INDENT: 2em">程序代码</p>
<p style="TEXT-INDENT: 2em">&lt;destination id="dataService"&gt;</p>
<p style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp; &lt;properties&gt;</p>
<p style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;source&gt;net.zhuoqun.connectDB.DataServiceImpl&lt;/source&gt;</p>
<p style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp; &lt;/properties&gt;</p>
<p style="TEXT-INDENT: 2em">&lt;/destination&gt;</p>
<p style="TEXT-INDENT: 2em">当你设定了 destination 的时候，你就引用了了可以用来连接相应类的信息通道（messaging channel）。它的 id 必须在文件中是独一无二的。 source属性是指你编译的JAVA类在classes文件夹中的路径。由于我的DataServiceImpl类在classes\net\zhuoqun\connectDB中，所以source的值为net.zhuoqun.connectDB.DataServiceImpl。记住，不要写.class后缀。&lt;properties&gt; 标签还可以有一个&lt;scope&gt;子标签，其作用我在这里就不说了，大家自己看相关文档（关于FDS的配置其实有很多东西，这些在帮助文档里都有，我这里不多说了，也说不过来，自己看吧）。<br><br>现在我们已经配置好了后台的 FDS，做完了整个程序的大部分工作，接下来就是前台Flex程序调用的事情了。</p>
<p style="TEXT-INDENT: 2em">第四步：创建Flex程序</p>
<p style="TEXT-INDENT: 2em">打开Flex Builder，新建一个工程 ConnectDB。菜单栏中 File -&gt; New -&gt; Flex Project，这时会弹出一个对话框，选择 Flex Data Service最下面的，如图：</p>
<p style="TEXT-INDENT: 2em"><a href="http://www.zhuoqun.net/attachments/month_0610/r200610714244.JPG"><img src="http://www.zhuoqun.net/attachments/month_0610/r200610714244.JPG" border=0></a></p>
<p style="TEXT-INDENT: 2em">其中还有两个编译选项，分别是&#8220;在Flex Builder中本地编译&#8221;（编译成SWF和HTML页放到服务器）和&#8220;当用户浏览页面时再编译&#8221;，你可以根据需要选择，这里我们选择第一个。</p>
<p style="TEXT-INDENT: 2em">接下来设置FDS服务器的根目录和路径：</p>
<p style="TEXT-INDENT: 2em"><a href="http://www.zhuoqun.net/attachments/month_0610/p200610714349.JPG"><img src="http://www.zhuoqun.net/attachments/month_0610/p200610714349.JPG" border=0></a></p>
<p style="TEXT-INDENT: 2em">输入工程的名称和目录：</p>
<p style="TEXT-INDENT: 2em"><a href="http://www.zhuoqun.net/attachments/month_0610/u200610714426.JPG"><img src="http://www.zhuoqun.net/attachments/month_0610/u200610714426.JPG" border=0></a></p>
<p style="TEXT-INDENT: 2em">然后点击下一步设定类路径以及输出文件夹等等：</p>
<p style="TEXT-INDENT: 2em"><a href="http://www.zhuoqun.net/attachments/month_0610/s200610714457.JPG"><img src="http://www.zhuoqun.net/attachments/month_0610/s200610714457.JPG" border=0></a></p>
<p style="TEXT-INDENT: 2em">这些都设定好之后点击 完成 就创建了一个Flex工程。</p>
<p style="TEXT-INDENT: 2em">第五步：通过 RemoteObject 访问数据库</p>
<p style="TEXT-INDENT: 2em">打开工程中生成的主文件 ConnectDB.mxml，声明一个 RemoteObject ：</p>
<p style="TEXT-INDENT: 2em">程序代码</p>
<p style="TEXT-INDENT: 2em">&lt;mx:RemoteObject id="getData" destination="dataService" result="proccessResult(event.result)" fault="Alert.show(event.fault.faultString,'Error')"/&gt;</p>
<p style="TEXT-INDENT: 2em">其中 destination 的值是刚才我们在配置 FDS 的时候设定的 destination。 result 表示在这个RemoteObject 成功返回之后所要做的动作，这里我们调用一个方法 proccessResult()来处理返回的数据，它的参数 event.result 就是从服务器段获得的数据，数据是作为一个对象传过来的。 fault 表示在这个RemoteObject请求失败时要做的处理，这里我们会弹出一个显示错误信息的对话框。接下来我们要声明一个DataGrid控件来显示公告的标题和发布日期：<br><br></p>
<p style="TEXT-INDENT: 2em">程序代码</p>
<p style="TEXT-INDENT: 2em">&lt;mx:DataGrid id="myDG"&gt;</p>
<p style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&lt;mx:columns&gt;</p>
<p style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;mx:DataGridColumn headerText="标题" dataField="title"/&gt;</p>
<p style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;mx:DataGridColumn headerText="发布日期" dataField="dates" labelFunction="formatDate"/&gt;</p>
<p style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&lt;/mx:columns&gt;</p>
<p style="TEXT-INDENT: 2em">&lt;/mx:DataGrid&gt;</p>
<p style="TEXT-INDENT: 2em">其中headerText是显示在上方的表头，dataField表示要显示的数据域，为什么数据域是title和dates呢？因为我们传回的是一个 NoticeInfo 对象数组，虽然它是作为一个对象传回来的，但是其中的数据结构并没有变，那些数据域的名字也没有变，所以我们可以根据 NoticeInfo 中的变量设定dataField。labelFunction 属性是用来格式化显示的，因为传回来的是格林威治时间，所以我们需要将其格式化然后显示出来。注意，这里只是显示两个数据域，并不代表其它的数据都没有了，它们仍然存在，只是没有显示出来。<br><br>接下来，在 &lt;mx:Script&gt; 标签中编写proccessResult()方法和格式化日期的 formatDate方法：<br></p>
<p style="TEXT-INDENT: 2em">程序代码</p>
<p style="TEXT-INDENT: 2em">private function proccessResult(result:Object):void</p>
<p style="TEXT-INDENT: 2em">{</p>
<p style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;myDG.dataProvider = ArrayUtil.toArray(result);</p>
<p style="TEXT-INDENT: 2em">}</p>
<p style="TEXT-INDENT: 2em">private function formatDate(item:Object,column:DataGridColumn):String</p>
<p style="TEXT-INDENT: 2em">{</p>
<p style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;return df.format(item.dates);</p>
<p style="TEXT-INDENT: 2em">}&nbsp;&nbsp;&nbsp;&nbsp;// df 是一个 DateFormatter，在下面会给出。关于如何格式化DataGrid的显示</p>
<p style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;// 以及DateFormatter这里就不讨论了，帮助里写得很清楚</p>
<p style="TEXT-INDENT: 2em">这个函数只是简单地将获得的数据传给 myDG 的 dataProvider。result 的类型是Object，因为数据是作为一个对象传过来的。之所以调用 ArrayUtil.toArray() 这个方法，是因为返回的记录可能只有一条，而myDG 的 dataProvider显示单个对象的时候可能会出错，所以安全起见先将其转换成数组。<br><br>最后，我们编写调用 RemoteObject 的方法，使其在程序启动时就调用。<br></p>
<p style="TEXT-INDENT: 2em">程序代码</p>
<p style="TEXT-INDENT: 2em">private function initApp():void</p>
<p style="TEXT-INDENT: 2em">{</p>
<p style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;getData.getNotices();</p>
<p style="TEXT-INDENT: 2em">}</p>
<p style="TEXT-INDENT: 2em"></p>
<p style="TEXT-INDENT: 2em">其中 getData 是RemoteObject的 id，getNotices()是DataServiceImpl.java中的方法。在这里可以直接调用它。当然，如果DataServiceImpl.java有其它方法，也可以通过这种方式直接调用。接下来设定组件创建完毕时调用 initApp()方法，在 &lt;mx:Application&gt;中添加一个creationComplete属性: </p>
<p style="TEXT-INDENT: 2em">程序代码</p>
<p style="TEXT-INDENT: 2em">&lt;mx:Application xmlns:mx="<a href="http://www.adobe.com/2006/mxml"><font color=#268ba9>http://www.adobe.com/2006/mxml</font></a>" fontSize="12" </p>
<p style="TEXT-INDENT: 2em">creationComplete="initApp()"&gt;</p>
<p style="TEXT-INDENT: 2em">&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;</p>
<p style="TEXT-INDENT: 2em">ConnectDB.mxml的全部代码：<br></p>
<p style="TEXT-INDENT: 2em">&lt;?xml version="1.0" encoding="utf-8"?&gt;<br>&lt;mx:Application xmlns:mx="<a href="http://www.adobe.com/2006/mxml"><font color=#268ba9>http://www.adobe.com/2006/mxml</font></a>" fontSize="12" creationComplete="initApp()"&gt;<br>&nbsp;&lt;mx:Script&gt;<br>&nbsp;&nbsp;&lt;![CDATA[<br>&nbsp;&nbsp;&nbsp;import mx.controls.Alert;<br>&nbsp;&nbsp;&nbsp;import mx.utils.ArrayUtil;<br>&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;private function initApp():void<br>&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;getData.getNotices();<br>&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;private function proccessResult(result:Object):void<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; myDG.dataProvider = ArrayUtil.toArray(result);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } </p>
<p style="TEXT-INDENT: 2em">&nbsp;&nbsp;]]&gt;<br>&nbsp;&lt;/mx:Script&gt;<br>&nbsp;<br>&nbsp;&lt;mx:RemoteObject id="getData" destination="dataService" result="proccessResult(event.result)" fault="Alert.show(event.fault.faultString,'Error')"/&gt;<br>&nbsp;<br>&nbsp;&lt;mx:DataGrid id="myDG"&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;mx:columns&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&lt;mx:DataGridColumn headerText="id" dataField="userid"/&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;mx:DataGridColumn headerText="username" dataField="username"/&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;mx:DataGridColumn headerText="contents" dataField="contents"/&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;mx:DataGridColumn headerText="dates" dataField="dates"/&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/mx:columns&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/mx:DataGrid&gt; </p>
<p style="TEXT-INDENT: 2em">&lt;/mx:Application&gt;<br></p>
<p style="TEXT-INDENT: 2em">整个工程终于完成，启动JRUN or Tomcat，然后运行。结果如图所示：<br></p>
</div>
<img src ="http://www.cnitblog.com/gavinkin555/aggbug/32871.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/gavinkin555/" target="_blank">gavinkin555</a> 2007-09-03 15:13 <a href="http://www.cnitblog.com/gavinkin555/articles/32871.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>