﻿<?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>PHP博客-喜气羊羊-随笔分类-Flex</title><link>http://www.phpweblog.net/young40/category/363.html</link><description>羊羊其实是条鱼|每天学习一点点|每天进步一点点</description><language>zh-cn</language><lastBuildDate>Tue, 11 Dec 2007 05:58:02 GMT</lastBuildDate><pubDate>Tue, 11 Dec 2007 05:58:02 GMT</pubDate><ttl>60</ttl><item><title>怎么学习flex-as教程</title><link>http://www.phpweblog.net/young40/archive/2007/11/10/2220.html</link><dc:creator>young40</dc:creator><author>young40</author><pubDate>Sat, 10 Nov 2007 10:47:00 GMT</pubDate><guid>http://www.phpweblog.net/young40/archive/2007/11/10/2220.html</guid><wfw:comment>http://www.phpweblog.net/young40/comments/2220.html</wfw:comment><comments>http://www.phpweblog.net/young40/archive/2007/11/10/2220.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.phpweblog.net/young40/comments/commentRss/2220.html</wfw:commentRss><trackback:ping>http://www.phpweblog.net/young40/services/trackbacks/2220.html</trackback:ping><description><![CDATA[<div class="cnt">
<p><strong>＊Flex 的基础架构</strong></p>
<p>关于 flex 基本上常被问到的不外乎就是&#8220;如何可以学好它？&#8221;，要了解这个问题的答案基本上只要看懂下面这个图就OK了。</p>
<p><img src="http://www.zengrong.net/wp-content/uploads/2007/08/flexstructure.gif" alt="Flex 的基础架构"></p>
<p><strong>＊Actionscript 该学的重点</strong></p>
<p>从最底层看起，最下面的 actionscript 3是一切的基础，它是 flash/flex 编程使用的唯一程式语言，因此任何人想学好 flex 第一件事绝对是先摸熟 actionscript 这个语言，包含：</p>
<ol>
    <li>它的基本语法与结构(array, hash, loop, if else&#8230;)</li>
    <li>DisplayList (DisplayObject, DisplayObjectContainer)与 Event system(bubbling, propagating&#8230;)</li>
    <li>Sound, Video, NetConnection 与 Graphics class</li>
</ol>
<p>掌握 as3 的精华后，接下来就可以进入 flex framework。</p>
<p><strong>＊Flex framework 的重点</strong></p>
<p>基本上 flex framework 就是用 actionscript 写成的框架，因此也可以把它看成是 as3的最好示范，看着 framework source 学 actionscript 也是挺不错的，只是路会变很长。</p>
<p>Flex Framework 整个体系非常博大精深，通常一般人不太可能完整把它学完，只需要针对最常用到的部份熟悉就好，图中列出的那三块(component, managers, style/skin)就是我个人认为所有初学者最优先该学会的。</p>
<p><strong>＊Component 该学些什么</strong></p>
<p>Component 是整个 flex framework 的基础，几乎80% 的元素都是由 UIComponent
继承而来，例如最根本的它本身就是一个 UIComponent，因此，熟悉 component 就成为学好 flex framework
最根本也最重要的基本功</p>
<p>Flex 内建了 二十几个 UI controls, 例如 Button, DataGrid, HBox等，以种类来分，这些 components 可以概分为三大类：</p>
<ul>
    <li>Controls: Button, DateChooser, Slider&#8230;</li>
    <li>Containers: Box, DividedBox, Panel&#8230;</li>
    <li>List: DataGrid, Tree, TileList&#8230;</li>
</ul>
<p>初学者第一步至少该学会怎么用这些元件，了解每个元件的 properties, events, styles, effects&#8230;，知道怎么在手册里查它的 API 文件，以及何时该用何种元件。</p>
<p>进一步，则是学会怎么修改这些元件，例如继承一个 Button 下来加上不同的功能，或是写不同的 skin border 来改变它的外观。</p>
<p>再进一步，则是开始研究元件的生命周期，了解每个元件是何时初始化，元件内部有那些关键指令与它们个别的功能，然后可以试着建立自已的 custom component。</p>
<p>这一关看起来容易但实际上最困难，因为 flex 的 component framework 写的非常庞大，虽然乱中有序但要在混沌中看出隐藏的架构然后抓住重点整串提起，就非得有人带着指引正确的途径才比较可能完成。</p>
<p><strong>＊manager 是什么</strong></p>
<p>图中最上方的第二块就是 manager。</p>
<p>flex 里有很多的 managers，负责做各种不同的工作(废话&#8230;)，几个比较重要的包含：</p>
<ul>
    <li>SystemManager:<br>
    它是每个 flex 程序的根源，最先被下载，也最早启动，由它进行一连串的 app boot流程</li>
    <li>StyleManager:<br>
    它负责整支app 的 css style 套用与 skin 生成，如果想玩动态 css 载换也靠它</li>
    <li>DragManager:<br>
    Flex最大的卖点就是 drag and drop（拖放），这个 manager 就是背后的英雄，初学者至少要学会怎么处理 drag
    行为的五个事件，以及如何在不同元件间做拖放；进阶的玩家则应该深入研究这支 manager 是怎么写成的，详细阅读它的 source
    会得到意想不到的无穷乐趣(如果你读完却没有这种感觉，呃，那代表你该再多读几次，如果还是没有，那请私下联络我 <img src="http://www.zengrong.net/wp-includes/images/smilies/icon_biggrin.gif" class="wp-smiley" alt=":D"> )</li>
    <li>ModuleManager:<br>
    使用 Flex 开发大型应用程式时，往往会将程式切割成许多小的 module, 这个 manager 就是负责载入并管理所有的 module (包含它的 class partition)，初心者或许用不到，但有志深入的玩家一定要很熟。</li>
    <li>CursorManager:<br>
    这个用到的时机不是很多，但偶尔要换一下 cursor 时还是会用到，初学者至少要知道怎么用指定的图案去换掉系统cursor。</li>
</ul>
<p><strong>＊Style/Skin 的重点</strong></p>
<p>CSS style 与 skinning 是 Flex 最大的卖点之一，也是开发过程中较为麻烦也最耗时的部份。</p>
<p>初学者应该要彻底了解如何使用 CSS style 来打点一支 flex app 的外观，换颜色、素材，使用外部 assets 修饰介面。</p>
<p>中阶玩家则应该了解 skinning 的系统，包含 programmatic skinning 与 graphical skin，它们俩的差别？使用时机？如何客制化（zrong注1）？</p>
<p>更高阶的玩家则应该熟悉整个 Styling system 的运作模式，外加如何动态载入 css 在 runtime 换掉整个介面。</p>
<p>简而言之，flex app 写的好不好，外行人其实看不太出来，但一支 app UI 美不美则是一翻两瞪眼，比较漂亮的那就先加十分</p>
<p>(当然，有一种情况是刻意用心去美化了介面结果弄巧成拙搞的怨声载道人人喊打，但那种比较不多见，也不是每家公司都会搞到这步田地，就先不讨论)</p>
<p><strong>＊学完基本功后下一步</strong></p>
<p>在我的标准里，当一个 developer 对上图内每一块都有中等程度的了解后，就算是完成 flex 养成教育，可以迈向下一个阶段。</p>
<p>也就是开始熟悉 application 的制作手法，这包含</p>
<ul>
    <li>了解至少一种以上的开发框架，例如
    Cairngorm，老实说我对这个框架没什么好感(因为手法太复杂，只适合超复杂登月计画或火星探勘时使用)，但它结构设计良好，又是业界公认的圣杯，
    等于是专家们共通的语言，因此至少要先了解它在做什么，将来在专业场合才好沟通(俗话说 know the rules so you know
    what you are breaking, 就是指这情况)</li>
    <li>接着可以看看比较简单的手法，像 Riawave, Model-Glue:Flex, PureMVC&#8230;等，基本上这些框架设计方式都大同小异，每个都有不同的应用场合，可以挑一个喜欢的再自行修改。</li>
    <li>了解基本的概念，例如 Value Object, DAO, MVC 等，它们在大部份的程式框架里都会出现，早点学会日子比较轻松。</li>
    <li>接着就是开始实际 coding，写一个中小型规模的app，不论是单纯的 CRUD (zrong注2)程序，或是留言版、电话簿、进销存管理都可以，籍由多写来强化编程的概念，然后透过大量的 peer code review 来找出可改进的地方。</li>
</ul>
<p><strong>＊结论</strong></p>
<p>结论还是老话一句：要入门 flex 超级简单，只要不是白痴应该一小时就行，但要成为可独当一面的专业开发者，路就很长，如果没有走对方向很容易就迷失甚至最后放弃。</p>
<p>换句话说，要能成为职场上真正需要的 professional developer，并不如表面上想象的容易(其实我想每种技术领域跟产业都一样吧)，这也是我过去半年来协助很多公司做 recruiting 后的感想。</p>
</div><img src ="http://www.phpweblog.net/young40/aggbug/2220.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.phpweblog.net/young40/" target="_blank">young40</a> 2007-11-10 18:47 <a href="http://www.phpweblog.net/young40/archive/2007/11/10/2220.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>FLEX屏蔽鼠标右键 </title><link>http://www.phpweblog.net/young40/archive/2007/11/08/2212.html</link><dc:creator>young40</dc:creator><author>young40</author><pubDate>Thu, 08 Nov 2007 02:35:00 GMT</pubDate><guid>http://www.phpweblog.net/young40/archive/2007/11/08/2212.html</guid><wfw:comment>http://www.phpweblog.net/young40/comments/2212.html</wfw:comment><comments>http://www.phpweblog.net/young40/archive/2007/11/08/2212.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.phpweblog.net/young40/comments/commentRss/2212.html</wfw:commentRss><trackback:ping>http://www.phpweblog.net/young40/services/trackbacks/2212.html</trackback:ping><description><![CDATA[<p>屏蔽FLEX右键菜单以及实现自定义的FLEX右键功能</p>
<p>==========================================================================================<br>修订记录:<br>&nbsp;&nbsp;&nbsp;&nbsp; 2007/06/07 :&nbsp; 创建&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp; 2007/07/02 : 修改了一个错误: getMouseTarget参数event为MouseEvent, 而不是MenuEvent类型<br>==========================================================================================</p>
<p><br>完全屏蔽FLEX右键菜单比当初想象的要难一些,因为大多数FLEX文档中仅仅介绍了如何隐藏一部分FLEX右键菜单,例如:</p>
<p>var contextMenu : ContextMenu = new ContextMenu();<br>contextMenu.hideBuiltInItems(); // 隐藏一些内建的鼠标右键菜单项</p>
<p>但
是这个功能不能隐藏"设置"和"关于"右键菜单,而在一些应用中,希望能够利用鼠标右键完成一些操作功能,例如绘图程序和游戏等,这时候右键菜单就是"欲
除之而后快"了.但在FLEX中监听mouseDown捕获不了右键事件,而在ContextMenu的Select事件也无法屏蔽.</p>
<p>在网上发现了一篇相关的BLOG,地址如下:<br><a href="http://www.flex-flex.net/blog/article.asp?id=12">http://www.flex-flex.net/blog/article.asp?id=12</a></p>
<p>其基本思路为:<br>&nbsp;<br>&nbsp;1,在FLEX中利用外部接口注册一个函数, 作为接收外部(HTML)右键事件的入口<br>&nbsp;2,在FLEX应用所在的HTML中拦截鼠标右键事件,调用FLEX外部函数,并取消事件的广播,以阻止事件到达FLEX应用.<br>&nbsp;3,在FLEX应用程序上监听mouseOver事件,并记录当前鼠标所在对象<br>&nbsp;4,当入口函数接收到HTML发送的右键事件后,模拟生成一个鼠标右键事件(buttonDown = false), 并发送到当前对象<br>&nbsp;5,在对象的mouseDown处理函数中,根据buttonDown的标志,分别处理鼠标左右键事件</p>
<p><br>这个思路比较清晰可行, 鼠标右键事件的流程为:</p>
<p>&nbsp;HTML鼠标右键事件----FLEX外部函数-----模拟的鼠标右键事件------相应的处理函数</p>
<p>具体的实现为:<br>&nbsp;<br>1, 在FLEX所在的HTML增加(注意根据自己的OBJECT ID更改"FlexTest")<br>&lt;script&gt;<br>function onNsRightClick(e){<br>&nbsp;if(e.which == 3){<br>&nbsp; FlexTest.openRightClick();<br>&nbsp; e.stopPropagation(); <br>&nbsp;}<br>&nbsp;return false;<br>}</p>
<p>function onIeRightClick(e){<br>&nbsp;if(event.button &gt; 1){<br>&nbsp; FlexTest.openRightClick();<br>&nbsp; parent.frames.location.replace('javascript: parent.falseframe');<br>&nbsp;}<br>&nbsp;return false;<br>}</p>
<p><br>if(navigator.appName == "Netscape"){<br>&nbsp;document.captureEvents(Event.MOUSEDOWN); <br>&nbsp;document.addEventListener("mousedown", onNsRightClick, true); <br>}<br>else{<br>&nbsp;document.onmousedown=onIeRightClick; <br>}<br>&nbsp;<br>&lt;/script&gt;</p>
<p>2, 修改FLEX的MXML</p>
<p>增加初始化和MOUSEOVER事件处理函数</p>
<p>&lt;mx:Application xmlns:mx="<a href="http://www.adobe.com/2006/mxml">http://www.adobe.com/2006/mxml</a>" layout="absolute"&nbsp; initialize="init()" mouseOver="getMouseTarget(event)" &gt;</p>
<p>增加MX SCRIPT</p>
<p>import mx.events.MenuEvent;<br>import mx.controls.Alert;<br>&nbsp; <br>private var mouseTarget:DisplayObject;<br>function init()<br>{<br>&nbsp;ExternalInterface.addCallback("openRightClick", openRightClick);<br>}</p>
<p>function getMouseTarget(event:MouseEvent):void<br>{<br>&nbsp;&nbsp; mouseTarget = DisplayObject(event.target);<br>}</p>
<p>function openRightClick():void<br>{<br>&nbsp;var e:MouseEvent = new MouseEvent(MouseEvent.MOUSE_DOWN, true, false, mouseTarget.mouseX, mouseTarget.mouseY);<br>&nbsp;mouseTarget.dispatchEvent(e);<br>}</p>
<p>function showMouseEvent(event)<br>{<br>&nbsp;if(event.buttonDown == true)<br>&nbsp; Alert.show("Left");<br>&nbsp;else<br>&nbsp; Alert.show("Right");<br>}</p>
<p><br>&lt;mx:Image x="0" y="10" id="bbb" name="bbb" source="res/15.jpg" mouseDown="showMouseEvent(event)" height="247"/&gt;</p>
<p><br>在修改完后,满怀信心的进行测试,结果右键菜单还能够出现!试了很多办法也不行,幸亏我的同事赵辉发现了解决方法,在这里向他表示感谢!</p>
<p>具体的方法就是修改wmode参数, 将wmode设置为opaque或transparent都可以达到这个效果<br>AC_FL_RunContent(<br>&nbsp; "src", "playerProductInstall",<br>&nbsp; "FlashVars", "MMredirectURL="+MMredirectURL+'&amp;MMplayerType='+MMPlayerType+'&amp;MMdoctitle='+MMdoctitle+"",<br>&nbsp; "width", "100%",<br>&nbsp; "height", "100%",<br>&nbsp; "align", "middle",<br>&nbsp; "id", "FlexTest",&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //// OBJECT ID<br>&nbsp; "wmode", "opaque",&nbsp; //////////////////////注意:这里是关键<br>&nbsp; "quality", "high",<br>&nbsp; "bgcolor", "#869ca7",<br>&nbsp; "name", "FlexTest",<br>&nbsp; "allowScriptAccess","sameDomain",<br>&nbsp; "type", "application/x-shockwave-flash",<br>&nbsp; "pluginspage", "<a href="http://www.adobe.com/go/getflashplayer">http://www.adobe.com/go/getflashplayer</a>"<br>&nbsp;);</p>
<p>ADOBE文档中对wmode的解释: <br>Sets
the Window Mode property of the SWF file for transparency, layering,
and positioning in the browser. Valid values of wmode are window,
opaque, and </p>
<p>transparent.</p>
<p>Set to window to play the SWF in its own rectangular window on a web page. </p>
<p>Set to opaque to hide everything on the page behind it.</p>
<p>Set
to transparent so that the background of the HTML page shows through
all transparent portions of the SWF file. This can slow animation
performance.</p>
<p>To make sections of your SWF file transparent, you
must set the alpha property to 0. To make your application's background
transparent, set the alpha </p>
<p>property on the &lt;mx:Application&gt; tag to 0.</p>
<p>The wmode property is not supported in all browsers and platforms.</p>
<p>现在就可以灵活的使用鼠标右键功能了!在IE6和FF2.0中测试通过</p>
<p><br>当然还有几个问题:<br>&nbsp;1,据JOVE的介绍,在IE7中需要添加<br>&nbsp; event.stopPropagation();<br>&nbsp; event.cancelBubble = true;<br>&nbsp; 因此还需要对浏览器进行一下判断,我没有装IE7,也就没有测,需要的朋友可以测试一下<br>&nbsp;2,一些有用的右键菜单,例如TEXT中能够自动弹出剪贴复制等功能的右键菜单,也没有了,真是有一利必有一弊啊! 不过这个还比较简单,可以再模拟一个ContextMenu的Select事件.<br>&nbsp;3, 对初始化流程应再进行一些改进,以保证FLEX的加载和外部接口建立成功后,再加以使用.</p>
&nbsp;<br>为转贴,原贴地址：http://blog.csdn.net/firefight/archive/2007/06/07/1641773.aspx<br>  <img src ="http://www.phpweblog.net/young40/aggbug/2212.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.phpweblog.net/young40/" target="_blank">young40</a> 2007-11-08 10:35 <a href="http://www.phpweblog.net/young40/archive/2007/11/08/2212.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Flex:处理事件</title><link>http://www.phpweblog.net/young40/archive/2007/11/04/2168.html</link><dc:creator>young40</dc:creator><author>young40</author><pubDate>Sun, 04 Nov 2007 09:40:00 GMT</pubDate><guid>http://www.phpweblog.net/young40/archive/2007/11/04/2168.html</guid><wfw:comment>http://www.phpweblog.net/young40/comments/2168.html</wfw:comment><comments>http://www.phpweblog.net/young40/archive/2007/11/04/2168.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.phpweblog.net/young40/comments/commentRss/2168.html</wfw:commentRss><trackback:ping>http://www.phpweblog.net/young40/services/trackbacks/2168.html</trackback:ping><description><![CDATA[<p>Adobe&#174; Flex&#8482; 应用程序是事件驱动的。事件让程序员知道用户何时与界面组件交互, 以及在组件的外观或生命周期中何时发生重要的变化, 如组件的创建或破坏或调整其大小。</p>
<p>当组件的实例发出某个事件时, 会通知您注册为该事件的监听器的对象。您在 ActionScript 中定义事件监听器 (也称为事件处理程序) 来处理事件。您在组件的 MXML 声明中或者在 ActionScript 中注册事件的事件监听器。</p>
<p>接收事件通知有三种方式: </p>
<ul class="link-list">
    <li><a href="http://www.adobe.com/cn/devnet/flex/quickstart/handling_events/#section1">在 MXML 中注册事件处理程序 </a></li>
    <li><a href="http://www.adobe.com/cn/devnet/flex/quickstart/handling_events/#section2">在 MXML 定义中创建线上事件处理程序</a></li>
    <li><a href="http://www.adobe.com/cn/devnet/flex/quickstart/handling_events/#section3">通过 ActionScript 注册事件监听器</a></li>
</ul>
<h3><a name="section1" id="section1"></a>
<p>获得事件通知的第一个和使用最广泛的方法是在 MXML 中定义事件发生时会调用的事件处理程序。</p>
<p>在此示例中, 您为 Button 控件的 <code>click</code> 事件定义一个事件处理程序。用户单击 Button 控件时, 事件处理程序会将 Label 控件的 <code>text</code> 属性设置为&#8220;Hello, World!&#8221;。 </p>
<h4>示例</h4>
<pre><span class="mxmlCdata">&lt;?xml version="1.0" encoding="utf-8"?&gt;</span><br><span class="mxmlComponent">&lt;mx:Application</span> <br>    xmlns:mx="<span class="mxmlString">http://www.adobe.com/2006/mxml</span>" <br>    width="<span class="mxmlString">300</span>" height="<span class="mxmlString">200</span>"<br>    horizontalAlign="<span class="mxmlString">center</span>" verticalAlign="<span class="mxmlString">middle</span>" <br>    viewSourceURL="<span class="mxmlString">src/HandlingEventsEventHandler/index.html</span>"<br><br><span class="mxmlComponent">&gt;</span><br>    <span class="mxmlTag">&lt;mx:Script&gt;</span><br>        <span class="asOperator">&lt;!</span><span class="asBracket">[</span>CDATA<span class="asBracket">[</span><br>            <span class="asReserved">import</span> flash.events.MouseEvent;<br>        <br>            <span class="asReserved">private</span> <span class="asFunction">function</span> clickHandler <span class="asBracket">(</span> event<span class="asOperator">:</span>MouseEvent <span class="asBracket">)</span><span class="asOperator">:</span><span class="asReserved">void</span><br>            <span class="asBracket">{</span><br>                myLabel.text <span class="asOperator">=</span> <span class="asString">"Hello, World!"</span>;<br>            <span class="asBracket">}</span><br>        <span class="asBracket">]]</span><span class="asOperator">&gt;</span><br>    <span class="mxmlTag">&lt;/mx:Script&gt;</span><br><br>    <br>    <span class="mxmlComponent">&lt;mx:Panel</span> <br>        title="<span class="mxmlString">My Application</span>" horizontalAlign="<span class="mxmlString">center</span>"<br>        paddingTop="<span class="mxmlString">10</span>" paddingBottom="<span class="mxmlString">10</span>" paddingLeft="<span class="mxmlString">10</span>" paddingRight="<span class="mxmlString">10</span>" <br>    <span class="mxmlComponent">&gt;</span><br><br>        <span class="mxmlComponent">&lt;mx:Label</span> id="<span class="mxmlString">myLabel</span>" width="<span class="mxmlString">180</span>" fontWeight="<span class="mxmlString">bold</span>" fontSize="<span class="mxmlString">24</span>"<span class="mxmlComponent">/&gt;</span><br>        <span class="mxmlComponent">&lt;mx:Button</span> id="<span class="mxmlString">myButton</span>" label="<span class="mxmlString">Click Me!</span>" click="clickHandler<span class="asBracket">(</span>event<span class="asBracket">)</span>;" <span class="mxmlComponent">/&gt;</span><br><br>    <span class="mxmlComponent">&lt;/mx:Panel&gt;</span><br><span class="mxmlComponent">&lt;/mx:Application&gt;</span></pre>
<h4>结果</h4>
<!--
handlingeventseventhandler SWF
-->
<!--
<script type="text/javascript">
// <![cdata[
embedsample("handlingeventseventhandler", "300", "200" , "9.0.0");
// ]]&gt;
</script>
--&gt;
<div id="HandlingEventsEventHandlersswf" class="swfcontent"><embed type="application/x-shockwave-flash" src="http://www.adobe.com/cn/devnet/flex/quickstart/handling_events/swfs/HandlingEventsEventHandler.swf" id="HandlingEventsEventHandlersswf" name="HandlingEventsEventHandlersswf" bgcolor="#ffffff" quality="high" wmode="window" menu="true" height="200" width="300"></div>
<script type="text/javascript">
// <![cdata[
var props =" new" object();
props.swf =" "/cn/devnet/flex/quickstart/handling_events/swfs/handlingeventseventhandler.swf";
props.id" =" "handlingeventseventhandlersswf";
props.w" =" "300";
props.h" =" "200";
props.ver" =" "9";
props.wmode=" "window";
props.menu="true";
var swfo =" new" SWFObject( props );
registerSWFObject( swfo, "HandlingEventsEventHandlersswf" );
// ]]&gt;
</script>
<br>
<p>若要查看全部源代码, 请右键单击 Flex 应用程序并从上下文菜单中选择&#8220;查看源代码&#8221;。</p>
<p class="nav-up"><a href="http://www.adobe.com/cn/devnet/flex/quickstart/handling_events/#globalnav" title="返回顶部">返回顶部</a></p>
<h3><a name="section2" id="section2"></a>在 MXML 定义中创建线上事件处理程序</h3>
<p>有时, 对事件作出响应最容易的方法是在组件的 MXML 定义中完全地定义事件处理程序。 这也称为使用线上事件处理程序。 </p>
<p>在下面的示例中, 您设置 <code>&lt;mx:Button&gt;</code> 标签的 <code>click</code> 属性, 这样它会直接设置 Label 控件的  <code>text</code> 属性, 而不会调用事件处理程序方法。 </p>
<div class="pod nw p1">
<div class="ne">
<div class="se">
<div class="sw">
<div class="n">
<div class="s">
<div class="w">
<div class="pod-body e">
<p><strong>提示: </strong>使用线上事件处理程序可能很快并产生很少代码, 但它们也会导致代码很难阅读、维护和缩放。 不在一个线上事件处理程序中包含多个 ActionScript 语句是一个很好的经验。 如果您必须包含更加复杂的逻辑, 请将它置于 <a href="http://www.adobe.com/cn/devnet/flex/quickstart/handling_events/#section1">ActionScript 帮助器方法</a>中或置于 <a href="http://www.adobe.com/cn/devnet/flex/quickstart/handling_events/#section3">ActionScript 事件处理程序</a>中。</p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- Close Pod 1 no header -->
<h4>示例</h4>
<pre><span class="mxmlCdata">&lt;?xml version="1.0" encoding="utf-8"?&gt;</span><br><span class="mxmlComponent">&lt;mx:Application</span> <br>    xmlns:mx="<span class="mxmlString">http://www.adobe.com/2006/mxml</span>" <br>    viewSourceURL="<span class="mxmlString">src/HandlingEventsInlineMethod/index.html</span>"<br>    horizontalAlign="<span class="mxmlString">center</span>" verticalAlign="<span class="mxmlString">middle</span>" <br>    width="<span class="mxmlString">300</span>" height="<span class="mxmlString">200</span>"<br><br><span class="mxmlComponent">&gt;</span><br>    <span class="mxmlComponent">&lt;mx:Panel</span> <br>        title="<span class="mxmlString">My Application</span>" horizontalAlign="<span class="mxmlString">center</span>"<br>        paddingTop="<span class="mxmlString">10</span>" paddingBottom="<span class="mxmlString">10</span>" paddingLeft="<span class="mxmlString">10</span>" paddingRight="<span class="mxmlString">10</span>"<br>    <span class="mxmlComponent">&gt;</span><br><br>        <span class="mxmlComponent">&lt;mx:Label</span> id="<span class="mxmlString">myLabel</span>" width="<span class="mxmlString">180</span>" fontWeight="<span class="mxmlString">bold</span>" fontSize="<span class="mxmlString">24</span>"<span class="mxmlComponent">/&gt;</span><br>        <span class="mxmlComponent">&lt;mx:Button</span> id="<span class="mxmlString">myButton</span>" label="<span class="mxmlString">Click Me!</span>" click="myLabel.text <span class="asOperator">=</span> <span class="asString">'Hello, World!'</span>" <span class="mxmlComponent">/&gt;</span><br><br>    <span class="mxmlComponent">&lt;/mx:Panel&gt;</span><br><span class="mxmlComponent">&lt;/mx:Application&gt;</span></pre>
<h4>结果</h4>
<!--
handling Events Inline Method
-->
<!--
<script type="text/javascript">
// <![cdata[
embedsample("handlingeventsinlinemethod", "300", "200" , "9.0.0");
// ]]&gt;
</script>
--&gt;
<div id="HandlingEventsInlineMethodswf" class="swfcontent"><embed type="application/x-shockwave-flash" src="http://www.adobe.com/cn/devnet/flex/quickstart/handling_events/swfs/HandlingEventsInlineMethod.swf" id="HandlingEventsInlineMethodswf" name="HandlingEventsInlineMethodswf" bgcolor="#ffffff" quality="high" wmode="window" menu="true" height="200" width="300"></div>
<script type="text/javascript">
// <![cdata[
var props =" new" object();
props.swf =" "/cn/devnet/flex/quickstart/handling_events/swfs/handlingeventsinlinemethod.swf";
props.id" =" "handlingeventsinlinemethodswf";
props.w" =" "300";
props.h" =" "200";
props.ver" =" "9";
props.wmode=" "window";
props.menu="true";
var swfo =" new" SWFObject( props );
registerSWFObject( swfo, "HandlingEventsInlineMethodswf" );
// ]]&gt;
</script>
<br>
<p>若要查看全部源代码, 请右键单击 Flex 应用程序并从上下文菜单中选择&#8220;查看源代码&#8221;。</p>
<p class="nav-up"><a href="http://www.adobe.com/cn/devnet/flex/quickstart/handling_events/#globalnav" title="返回顶部">返回顶部</a></p>
<h3><a name="section3" id="section3"></a>通过 ActionScript 注册事件监听器</h3>
<p>您还可以通过使用 ActionScript, 通过注册事件处理程序来对事件作出响应。 </p>
<p>在此示例中, 您通过使用 ActionScript 中的 <code>addEventHandler()</code> 方法来注册事件处理程序。 您将 <code>addEventHandler()</code> 方法置于 Application 容器的 <code>creationComplete</code>  事件的事件处理程序中。 </p>
<div class="pod nw p1">
<div class="ne">
<div class="se">
<div class="sw">
<div class="n">
<div class="s">
<div class="w">
<div class="pod-body e">
<p><strong>提示: </strong>Application 表单的 <code>creationComplete</code> 事件在 Application 表单及其子级被初始化之后, 在启动应用程序时发生。  <code>creationComplete</code> 事件的事件处理程序为您提供一个运行 ActionScript 代码以注册事件监听器的方便位置。</p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- Close Pod 1 no header -->
<h4>示例 </h4>
<pre><span class="mxmlCdata">&lt;?xml version="1.0" encoding="utf-8"?&gt;</span><br><span class="mxmlComponent">&lt;mx:Application</span> <br>    xmlns:mx="<span class="mxmlString">http://www.adobe.com/2006/mxml</span>" <br>     viewSourceURL="<span class="mxmlString">src/HandlingEventsActionScript/index.html</span>"<br>    horizontalAlign="<span class="mxmlString">center</span>" verticalAlign="<span class="mxmlString">middle</span>" <br>    width="<span class="mxmlString">300</span>" height="<span class="mxmlString">200</span>"<br>    creationComplete="creationCompleteHandler<span class="asBracket">(</span>event<span class="asBracket">)</span>;"<br><br><span class="mxmlComponent">&gt;</span><br>    <span class="mxmlTag">&lt;mx:Script&gt;</span><br>        <span class="asOperator">&lt;!</span><span class="asBracket">[</span>CDATA<span class="asBracket">[</span><br>            <span class="asReserved">import</span> flash.events.MouseEvent;<br>            <span class="asReserved">import</span> mx.events.FlexEvent;<br><br>            <span class="asReserved">private</span> <span class="asFunction">function</span> creationCompleteHandler<span class="asBracket">(</span>event<span class="asOperator">:</span>FlexEvent<span class="asBracket">)</span><span class="asOperator">:</span><span class="asReserved">void</span><br><br>            <span class="asBracket">{</span><br>                <span class="asComment">// Listen for the click event on the Button control<br></span>                myButton.addEventListener <span class="asBracket">(</span>MouseEvent.CLICK, clickHandler<span class="asBracket">)</span>;<br>            <span class="asBracket">}</span><br>        <br>            <span class="asReserved">private</span> <span class="asFunction">function</span> clickHandler <span class="asBracket">(</span> event<span class="asOperator">:</span>Event <span class="asBracket">)</span><span class="asOperator">:</span><span class="asReserved">void</span><br><br>            <span class="asBracket">{</span><br>                myLabel.text <span class="asOperator">=</span> <span class="asString">"Hello, World!"</span>;<br>            <span class="asBracket">}</span><br>        <span class="asBracket">]]</span><span class="asOperator">&gt;</span><br>    <span class="mxmlTag">&lt;/mx:Script&gt;</span><br><br>    <br>    <span class="mxmlComponent">&lt;mx:Panel</span> <br>        title="<span class="mxmlString">My Application</span>" horizontalAlign="<span class="mxmlString">center</span>"<br>        paddingTop="<span class="mxmlString">10</span>" paddingBottom="<span class="mxmlString">10</span>" paddingLeft="<span class="mxmlString">10</span>" paddingRight="<span class="mxmlString">10</span>"<br>    <span class="mxmlComponent">&gt;</span><br><br>        <span class="mxmlComponent">&lt;mx:Label</span> id="<span class="mxmlString">myLabel</span>" width="<span class="mxmlString">180</span>" fontWeight="<span class="mxmlString">bold</span>" fontSize="<span class="mxmlString">24</span>"<span class="mxmlComponent">/&gt;</span><br>        <span class="mxmlComponent">&lt;mx:Button</span> id="<span class="mxmlString">myButton</span>" label="<span class="mxmlString">Click Me!</span>" <span class="mxmlComponent">/&gt;</span><br><br>    <span class="mxmlComponent">&lt;/mx:Panel&gt;</span><br><span class="mxmlComponent">&lt;/mx:Application&gt;</span></pre>
<h4>结果</h4>
<!--
handling Events ActionScript
-->
<!--
<script type="text/javascript">
// <![cdata[
embedsample("handlingeventsactionscript", "300", "200" , "9.0.0");
// ]]&gt;
</script>
--&gt;
<div id="HandlingEventsActionScriptswf" class="swfcontent"><embed type="application/x-shockwave-flash" src="http://www.adobe.com/cn/devnet/flex/quickstart/handling_events/swfs/HandlingEventsActionScript.swf" id="HandlingEventsActionScriptswf" name="HandlingEventsActionScriptswf" bgcolor="#ffffff" quality="high" wmode="window" menu="true" height="200" width="300"></div>
<script type="text/javascript">
// <![cdata[
var props =" new" object();
props.swf =" "/cn/devnet/flex/quickstart/handling_events/swfs/handlingeventsactionscript.swf";
props.id" =" "handlingeventsactionscriptswf";
props.w" =" "300";
props.h" =" "200";
props.ver" =" "9";
props.wmode=" "window";
props.menu="true";
var swfo =" new" SWFObject( props );
registerSWFObject( swfo, "HandlingEventsActionScriptswf" );
// ]]&gt;
</script>
<br>
<p>若要查看全部源代码, 请右键单击 Flex 应用程序并从上下文菜单中选择&#8220;查看源代码&#8221;。</p>
<p class="nav-up"><a href="http://www.adobe.com/cn/devnet/flex/quickstart/handling_events/#globalnav" title="返回顶部">返回顶部</a></p>
<hr>
<h4>更多信息 </h4>
<p>有关处理事件的详细信息, 请参阅 <a href="http://www.adobe.com/go/flex2_livedocs" target="_blank">Flex 2 开发人员指南*</a>中的&#8220;使用事件&#8221;。 </p>
<h3 id="bio">关于作者</h3>
<div class="bio">
<address>
<p>Aral Balkan 快乐地工作着, 领导开发团队, 设计用户体验, 架构 Rich Internet Application, 并运行 <a href="http://osflash.org/" target="_blank">OSFlash.org*</a>、London Macromedia User Group 及其公司 <a href="http://www.ariaware.com/" target="_blank">Ariaware*</a>。 他热爱谈论设计模式及为书藉和杂志写文章。 他还创作了 Flash 平台的开放源码 RIA 框架: <a href="http://ariaware.com/products/arp/" target="_blank">Arp*</a>。 Aral 通常非常坚持己见、活跃且热情。 他喜欢微笑, 甚至会一边嚼口香糖一边走路。</p>
</address>
</div><img src ="http://www.phpweblog.net/young40/aggbug/2168.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.phpweblog.net/young40/" target="_blank">young40</a> 2007-11-04 17:40 <a href="http://www.phpweblog.net/young40/archive/2007/11/04/2168.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>