隨筆 - 8  文章 - 55  trackbacks - 0
          <2025年5月>
          27282930123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567

          常用鏈接

          留言簿(6)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          朋友的Blog

          最新評論

          閱讀排行榜

          評論排行榜

          Adobe? Flex?應用程序是事件驅動的。當用戶與界面組件交互時事件會通知程序員,
          當一個組件的外觀或者生命周期發生重要改變,比如創建或者銷毀一個容器,或改 變一個容器的大小的時候,事件也會通知程序員。

          當一個組件的實例分派一個事件時,你為那個事件注冊的監聽器對象就會被通知。 你可以在 ActionScript 中定義事件監聽器(或者叫做事件處理器)來處理事件。你 既可以在 MXML 聲明中為一個組件注冊事件監聽器,也可以在 ActionScript 中實現 相同的功能。

          接收事件通知有三種方式:
          ??在 MXML 中注冊一個事件處理器
          ??在 MXML 中創建一個內聯(inline)的事件處理器
          ??通過 ActionScript 注冊一個事件處理器

          在 MXML 中注冊一個事件處理器
          第一個,而且是最廣泛地被用來接收事件通知的方法就是在 MXML 中定義一個事件處 理器,當事件發生時就調用它。
          在這個例子中,你為一個 Button 控件的 click(點擊)事件定義了一個事件處理器。 當用戶點擊這個 Button 控件時,事件處理器會把 Label 控件的 text 屬性設成? "Hello,World!"。

          示例

          <?xml? version="1.0"? encoding="utf-8"?>
          <mx:Application
          xmlns:mx="
          http://www.adobe.com/2006/mxml "
          width="300"? height="200"
          horizontalAlign="center"? verticalAlign="middle"
          viewSourceURL="src/HandlingEventsEventHandler/index.html">
          <mx:Script>
          <![CDATA[
          import? flash.events.MouseEvent;
          private? function? clickHandler? (? event:MouseEvent? ):void
          {
          myLabel.text? =? "Hello,World!";
          }?
          ]]>?
          </mx:Script>
          <mx:Panel
          title="My? Application"? horizontalAlign="center"
          paddingTop="10"? paddingBottom="10"? paddingLeft="10"
          paddingRight="10"? >
          <mx:Label? id="myLabel"? width="180"? fontWeight="bold"
          fontSize="24"/>?
          <mx:Button? id="myButton"? label="Click? Me!"?
          click="clickHandler(event);"? />?
          </mx:Panel>
          </mx:Application>

          運行結果圖示:

          譯注:由于文檔中無法嵌入 SWF 文件,代碼運行結果請查看原文中相應的部分。

          ?在 MXML 中創建一個內聯(inline)的事件處理器

          ?有時響應事件的最簡單的方法就是完全在一個組件的 MXML 聲明中定義事件處理器。 這就是使用一個內聯(inline)的事件處理器。

          ?在下面的例子中,你設定了<mx:Button>標簽的click屬性,所以它可以直接設定 Label控件的text屬性,而不需要調用一個事件處理器方法。


          提示:使用內聯事件處理器可能比較快而且代碼較少,但是它也可以影響代碼的易讀性,可維護性和可擴展性。一個好的經驗法則就是不要在內聯事件處理器中包含 一條語句以上的 ActionScript。如果你必須包含更復雜的邏輯,就把它放到一個 ActionScript helper 方法(即第一種方法)或者一個 ActionScript 事件處理器(即 第三種方法)中。

          示例
          <?xml? version="1.0"? encoding="utf-8"?>
          <mx:Application
          xmlns:mx="http://www.adobe.com/2006/mxml"
          viewSourceURL="src/HandlingEventsInlineMethod/index.html"
          horizontalAlign="center"? verticalAlign="middle"
          width="300"? height="200">
          <mx:Panel?
          title="My? Application"? horizontalAlign="center"?
          paddingTop="10"? paddingBottom="10"? paddingLeft="10"
          paddingRight="10">?
          <mx:Label? id="myLabel"? width="180"? fontWeight="bold"?
          fontSize="24"/>?
          <mx:Button? id="myButton"? label="Click? Me!"? click="myLabel.text? =
          'Hello,? World!'"? />?
          </mx:Panel>
          </mx:Application>
          運行結果圖示:

          通過 ActionScript 注冊一個事件監聽器
          你也可以通過使用 ActionScript 注冊一個事件處理器來響應事件。 在這個例子中,使用ActionScript中的addEventHandler()? 方法注冊了一個事件監
          聽器。這個addEventHandler()方法被放在了用來處理Application容器的
          creationComplete事件的事件處理器中。
          提示:程序開始運行的時候,在Application的外觀和它的子組件初始化完畢之后, Application的creationComplete事件就會發生。creationComplete事件的處理器提 供了一個很方便的地方來放置注冊事件監聽器的ActionScript代碼。

          示例
          <?xml? version="1.0"? encoding="utf-8"?>
          <mx:Application
          xmlns:mx="http://www.adobe.com/2006/mxml"
          viewSourceURL="src/HandlingEventsActionScript/index.html"
          horizontalAlign="center"? verticalAlign="middle"
          width="300"? height="200"
          creationComplete="creationCompleteHandler(event);">
          <mx:Script>?
          <![CDATA[?
          import? flash.events.MouseEvent;
          import? mx.events.FlexEvent;?
          private? function
          creationCompleteHandler(event:FlexEvent):void
          ?
          {

          clickHandler);
          }
          ?//? Listen? for? the? click? event? on? the? Button? control
          myButton.addEventListener? (MouseEvent.CLICK,
          ?private? function? clickHandler? (? event:Event? ):void
          {
          myLabel.text? =? "Hello,? World!";

          }?
          ]]>?
          </mx:Script>
          <mx:Panel
          title="My? Application"? horizontalAlign="center"
          paddingTop="10"? paddingBottom="10"? paddingLeft="10"
          paddingRight="10">
          <mx:Label? id="myLabel"? width="180"? fontWeight="bold"
          fontSize="24"/>?
          <mx:Button? id="myButton"? label="Click? Me!"? />?
          </mx:Panel>
          </mx:Application>
          運行結果圖示:

          小編物語:本文援引 Dreamer's Blog ,特此感謝作者的努力。大家如果覺得這篇教程正是你所需要的話,請別忘了去作者的博客打打氣啊。

          posted on 2006-10-09 09:23 blog搬家了--[www.ialway.com/blog] 閱讀(261) 評論(0)  編輯  收藏 所屬分類: Flex
          主站蜘蛛池模板: 镇江市| 林芝县| 鄂托克前旗| 天水市| 景泰县| 天津市| 鲜城| 依安县| 灵璧县| 平乐县| 木兰县| 准格尔旗| 昌黎县| 潼关县| 乐安县| 清水河县| 南充市| 泰和县| 藁城市| 孟津县| 洛浦县| 丹阳市| 华容县| 古浪县| 固安县| 普陀区| 灌阳县| 达州市| 固原市| 甘德县| 江达县| 昂仁县| 仪陇县| 宝兴县| 新邵县| 巴彦县| 金昌市| 砚山县| 厦门市| 隆化县| 蒙自县|