| 最近在做地图JS和FLEX的封装工作,flex封装需要用到自定义事件这方面知识,在这里就简单介绍一下FLEX自定义事件。 
 自定义事件必须注意几点:
 
 (1)自定义事件通过继承Event类来实现。
 
 (2)自定义事件不可以自己触发,只能有系统事件派发。
 
 首先我们新建一个ActionScript 类,这个类继承flash.events.Event。
 
 复制代码 代码如下:  package
 {
 import flash.events.Event;
 
 public class MyEvent extends Event
 {
 public static const myEvent:String="myEvent";
 
 public var data:*;
 
 public function MyEvent(type:String,bubbles:Boolean=false,cancellabel:Boolean=false,data:* = null)
 {
 super(type,false,false);
 this.data = data;
 }
 
 override public function clone():Event{
 return new MyEvent(myEvent,false,false,data);
 }
 
 override public function toString():String{
 
 return formatToString("MyEvent");
 }
 }
 }
 
 创建一个组件来监听事件,实现数据的接受。
 
 component.mxml
 
 复制代码 代码如下:  <?xml version="1.0" encoding="utf-8"?>
 <s:Group xmlns:fx="http://ns.adobe.com/mxml/2009"
 xmlns:s="library://ns.adobe.com/flex/spark"
 xmlns:mx="library://ns.adobe.com/flex/mx" initialize="init()">
 <s:layout>
 <s:BasicLayout/>
 </s:layout>
 
 <fx:Script>
 <![CDATA[
 import mx.controls.Alert;
 import mx.events.FlexEvent;
 public var ff:FlexMyEvent;
 
 public function init():void{
 
 ff = this.parentDocument as FlexMyEvent;
 ff.addEventListener(MyEvent.myEvent,myEventHandler);//监听事件
 
 }
 public function myEventHandler(eve:Object):void{
 
 inpu.text = eve.data;
 Alert.show("事件触发,"+eve.data);
 }
 
 ]]>
 </fx:Script>
 
 <fx:Declarations>
 <!-- 将非可视元素(例如服务、值对象)放在此处 -->
 </fx:Declarations>
 
 
 <s:Panel backgroundColor="#E7D4DD">
 
 <s:TextInput>
 
 </s:TextInput>
 
 </s:Panel>
 
 
 
 </s:Group>
 
 主程序
 
 FlexMyEvent.mxml
 
 复制代码 代码如下:  <?xml version="1.0" encoding="utf-8"?>
 <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
 xmlns:s="library://ns.adobe.com/flex/spark"
 xmlns:mx="library://ns.adobe.com/flex/mx"
 xmlns:comp = "*"
 width="100%">
 
 <fx:Script>
 <![CDATA[
 
 import flash.external.ExternalInterface;
 import flash.system.Security;
 
 import mx.controls.Alert;
 import mx.events.FlexEvent;
 public var callBackInfo:String = "";
 public function doSend():void{
 
 callBackInfo = input.text;
 var myEve:MyEvent = new MyEvent(MyEvent.myEvent,false,false,callBackInfo);//派发事件 myEve.data is Object;
 this.dispatchEvent(myEve);
 
 }
 
 ]]>
 </fx:Script>
 
 <fx:Declarations>
 <!-- 将非可视元素(例如服务、值对象)放在此处 -->
 </fx:Declarations>
 
 <mx:HBox horizontalAlign="center" verticalAlign="middle">
 
 
 <s:Panel>
 <mx:HBox paddingLeft="5">
 <s:TextInput text="Send Hello">
 
 </s:TextInput>
 <s:Button label="Send">
 
 </s:Button>
 </mx:HBox>
 </s:Panel>
 
 <comp:Component>
 
 </comp:Component>
 </mx:HBox>
 
 </s:Application>
 
 
 
 (编辑:佛山站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |