flex中Event类的使用

时间:2022-06-17 14:53:55

当您创建自己的自定义 Event 类时,必须覆盖继承的 Event.clone() 方法,以复制自定义类的属性。如果您未设置在事件子类中添加的所有属性,则当侦听器处理重新分派的事件时,这些属性将不会有正确的值。

自定义事件类 继承flash.events.Event类 下面看代码 其中 message 是自定义的属性, 下面要使用这个属性 来传递参数

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

接下来建立一个控件 来指派这个事件
注册事件 CopyText

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

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

[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. <fx:Script>
  12. <!--[CDATA[
  13. import com.demo.event.TestEvent;
  14. protected function button1_clickHandler(event:MouseEvent):void
  15. {
  16. dispatchEvent(new TestEvent("CopyText",tempText.text));
  17. }
  18. ]]-->
  19. </fx:Script>
  20. <fx:Declarations>
  21. <!-- 将非可视元素(例如服务、值对象)放在此处 -->
  22. </fx:Declarations>
  23. <s:TextInput x="10" y="10" height="107" width="260" id="tempText"/>
  24. <s:Button x="14" y="124" label="Copy" click="button1_clickHandler(event)"/>
  25. </s:Group>

最后将这个控件放到主程序中, 并使用了这个自定义事件

[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. protected function testforms1_CopyTextHandler(event:TestEvent):void
  12. {
  13. this.t.text = event.message;
  14. }
  15. ]]-->
  16. </fx:Script>
  17. <fx:Declarations>
  18. <!-- 将非可视元素(例如服务、值对象)放在此处 -->
  19. </fx:Declarations>
  20. <components:testForms x="23" y="28" CopyText="testforms1_CopyTextHandler(event)">
  21. </components:testForms>
  22. <s:TextInput x="440" y="28" width="227" height="184" id="t"/>
  23. </s:Application>