Flex4自定義事件類型Event的相關應用

基於鬆耦合的概念 自定義事件類型將取到很重要的做用 java

 

當您建立本身的自定義 Event 類時,必須覆蓋繼承的 Event.clone() 方法,以複製自定義類的屬性。若是您未設置在事件子類中添加的全部屬性,則當偵聽器處理從新分派的事件時,這些屬性將不會有正確的值。 ide

 

自定義事件類 繼承flash.events.Event類 下面看代碼 其中 message 是自定義的屬性, 下面要使用這個屬性 來傳遞參數 flex

 

[java]  view plain copy
  1. package com.demo.event  
  2. {  
  3.     import flash.events.Event;  
  4.       
  5.     public class TestEvent extends Event  
  6.     {  
  7.         public static const EVENT_CLICK:String = "copy_text";  
  8.           
  9.         public var message:String;  
  10.           
  11.         public function TestEvent(type:String, message:String)  
  12.         {  
  13.             super(type);  
  14.             this.message = message;  
  15.         }  
  16.           
  17.         override public function clone():Event{    
  18.               
  19.             return new TestEvent(type,message);    
  20.               
  21.         }    
  22.     }  
  23. }  

 

接下來創建一個控件 來指派這個事件

註冊事件 CopyText this

<fx:Metadata>
  [Event(name="CopyText",type="com.demo.event.TestEvent")]
 </fx:Metadata>
指派事件 spa

protected function button1_clickHandler(event:MouseEvent):void
   {
    dispatchEvent(new TestEvent("CopyText",tempText.text));
   } .net

[c-sharp]  view plain copy
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <s:Group xmlns:fx="http://ns.adobe.com/mxml/2009"   
  3.          xmlns:s="library://ns.adobe.com/flex/spark"   
  4.          xmlns:mx="library://ns.adobe.com/flex/mx" width="400" height="300">  
  5.     <s:layout>  
  6.         <s:BasicLayout/>  
  7.     </s:layout>  
  8.     <fx:Metadata>  
  9.         [Event(name="CopyText",type="com.demo.event.TestEvent")]  
  10.     </fx:Metadata>  
  11.   
  12.     <fx:Script>  
  13.         <!--[CDATA[  
  14.             import com.demo.event.TestEvent;  
  15.             protected function button1_clickHandler(event:MouseEvent):void  
  16.             {  
  17.                 dispatchEvent(new TestEvent("CopyText",tempText.text));  
  18.             }  
  19.         ]]-->  
  20.     </fx:Script>  
  21.   
  22.     <fx:Declarations>  
  23.         <!-- 將非可視元素(例如服務、值對象)放在此處 -->  
  24.     </fx:Declarations>  
  25.     <s:TextInput x="10" y="10" height="107" width="260" id="tempText"/>  
  26.     <s:Button x="14" y="124" label="Copy" click="button1_clickHandler(event)"/>  
  27. </s:Group>  

 

最後將這個控件放到主程序中, 並使用了這個自定義事件 component

[c-sharp]  view plain copy
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"   
  3.                xmlns:s="library://ns.adobe.com/flex/spark"   
  4.                xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600" xmlns:components="com.demo.view.components.*">  
  5.     <s:layout>  
  6.         <s:BasicLayout/>  
  7.     </s:layout>  
  8.     <fx:Script>  
  9.         <!--[CDATA[  
  10.             import com.demo.event.TestEvent;  
  11.   
  12.             protected function testforms1_CopyTextHandler(event:TestEvent):void  
  13.             {  
  14.                 this.t.text = event.message;  
  15.             }  
  16.   
  17.         ]]-->  
  18.     </fx:Script>  
  19.     <fx:Declarations>  
  20.         <!-- 將非可視元素(例如服務、值對象)放在此處 -->  
  21.     </fx:Declarations>  
  22.     <components:testForms x="23" y="28" CopyText="testforms1_CopyTextHandler(event)">  
  23.     </components:testForms>  
  24.     <s:TextInput x="440" y="28" width="227" height="184" id="t"/>  
  25. </s:Application>  
相關文章
相關標籤/搜索