Flex自定义事件的一个重要用途是能够把子容器中的信息传递到父容器中。
parent.mxml
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" xmlns:son="son.*" creationComplete="init();">
<mx:Script>
<![CDATA[
import mx.controls.Alert;
import events.DataChangeEvent;
private function init():void{
//mybt.addEventListener(DataChangeEvent.name,onChange);
this.addEventListener(DataChangeEvent.name,onChange);
}
private function onChange(e:DataChangeEvent):void{
Alert.show(e.test);
}
]]>
</mx:Script>
<son:son x="146" y="132" id="mybt" DataChange="onChange(event)"/>
</mx:Application>
son.mxml
<?xml version="1.0" encoding="utf-8"?>
<mx:Form xmlns:mx="http://www.adobe.com/2006/mxml" width="400" height="300">
<mx:Metadata>
[Event(name="DataChange", type="events.DataChangeEvent")]
</mx:Metadata>
<mx:Script>
<![CDATA[
import events.DataChangeEvent;
private function Change():void{
var e:DataChangeEvent = new DataChangeEvent("test", "DataChange",true);
this.dispatchEvent(e);
}
]]>
</mx:Script>
<mx:Button label="Button" click="Change()"/>
</mx:Form>
DataChangeEvent.as
package events
{
import flash.events.Event;
public class DataChangeEvent extends Event
{
public var test:String;
public static var name:String="DataChange";
public function DataChangeEvent(test:String,type:String,bubbles:Boolean=false)
{
super(type,bubbles);
this.test=test;
}
override public function clone():Event{
return new DataChangeEvent(type,test);
}
}
}
其中<son:son x="146" y="132" id="mybt" DataChange="onChange(event)" />中的DataChange="onChange(event) "相当于mybt.addEventListener(EnableChangeEvent.ENABLE_CHANGED, onChange);
相关知识点:
dispatchEvent()
dispatchEvent()方法需要用一个参数指定需要发布的事件对象,发布事件时会通知该事件的所有监听者,并执行监听者指定的事件处理函数。
addEventListener()
addEventListener()方法为监听者指定事件处理函数。
默认情况下,捕获功能处于关闭状态,一般没有必要进行捕获跟踪。事件只在bubbles 属性为true 时才进行冒泡,可以冒泡的事件包括:change、click、doubleClick、keyDown、keyUp、mouseDown、 mouseUp。其他自定义事件如果想要冒泡需要设定bubbles为true(默认为false)。如本例中,button监听了DataChangeEvent事件,Application也监听了DataChangeEvent事件,由于bubbles设为true,当button按下之后,button触发了事件之后,Application也会触发。如果bubbles为false,就只有button触发事件(这时只有通过继续分发事件才能使Application触发,继续分发就会涉及到自定义事件需要复写clone方法)。
clone()
clone()方法返回一个新的 Event 对象,它是 Event 对象的原始实例的副本。通常您不需要调用 clone();当您重新调度事件,即调用 dispatchEvent(event)(从正在处理 event 的处理函数)时,EventDispatcher 类会自动调用它。 如果没有复写clone方法,就会调用父类的clone方法,返回父类的event实例,会产生类型不匹配的错误。
分享到:
相关推荐
flex自定义事件的含义 简单例子说明 。。。。。。。。。。
flex4 自定义事件 用法 源码 完整项目导入可运行
flex自定义组件事件DEMO,一个简单的flex自定义组件的demo
Flex自定义组件和自定义事件的使用。 Flex自定义组件和自定义事件的使用。
flex 自定义组件,UI,flex 自定义组件。
flex自定义的树形结构,展开,收缩,多级目录支持
Flex自定义加载条的一个小示例。里面有readMe文本
Flex 自定义ToolTip源代码,可以运行的源代码
研究Flex 组件声明周期,了解组件的生成步骤
flex 自定义右键菜单 多级右键菜单flex 自定义右键菜单 多级右键菜单flex 自定义右键菜单 多级右键菜单
Flex 自定义 时间 日历 控件
FLEX自定义等待图标资源 18个SWF资源,19个GIF资源
Flex自定义右键菜单
FLex自定义写的控件,有时间,datagrid,tree,combox等,以及常用的处理字符串,弹出窗口
flex自定义创建css样式,很有用的资源··
Flex 自定义公共包,可以在项目里直接使用
flex 高级自定义组件 需要重写的方法,以及为什么要重写,何时调用等。
NULL 博文链接:https://whp0731.iteye.com/blog/726223
flex 自定义右键菜单
flex 自定义 datagrid 列头带组合框进行过滤