Flex开发过程中很多情况下都要用到自定义的事件
关于事件 大概有这么几个概念
触发事件的操作.
事件对象.
事件侦听器(个人感觉事件侦听器和事件侦听函数是同等的)
事件类型
自定义事件中包括一下元素
事件类型.
事件调度程序
事件调度程序描述的是在什么情况下广播事件
触发事件的操作 告诉事件调度程序将事件广播出去,事件广播出去后,侦听器如果已经注册了这个事件,那么这个时候就会监听到被广播出去的事件,进而执行特定的操作!
下面给出一个简单的例子
Person类 这个类来广播事件
package myevent { import flash.events.Event; import flash.events.EventDispatcher; import flash.events.IEventDispatcher; public class Person extends EventDispatcher { private static var nowHeight:Number; //事件类型 public static const HEIGHT_CHANGE:String = "height_change"; public function Person(target:IEventDispatcher=null) { super(target); } //设定存储器 public function set hei(height:Number):void { nowHeight = height; dispatchEvent(new Event(Person.HEIGHT_CHANGE)); } public function get hei():Number { return nowHeight; } } }
下面是主程序
<?xml version="1.0" encoding="utf-8"?> <mx:Application creationComplete="this.init()" xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"> <mx:Script> <![CDATA[ import myevent.Person; [Bindable] private var nowHei:Number; private var p:Person = new Person(); public function init():void { p.addEventListener(Person.HEIGHT_CHANGE,changeHandler); } public function changeHandler(event:Event):void { var person:Person = Person(event.target); trace("[侦听到身高改变,当前身高]"+person.hei) } ]]> </mx:Script> <mx:ApplicationControlBar dock="true"> <mx:NumericStepper value="{nowHei}" change="p.hei=event.value"/> </mx:ApplicationControlBar> </mx:Application>
当高度改变时 在控制台就会输出当时的身高
在事件中还包括事件捕获,也事件冒泡 这个概念也是比较好理解的
比如说在A容器中包括B,B容器中包括一个按钮 如果在时间侦听器注册时 设定捕获为true 那么事件首先传入A 然后传入B最后到C C执行完事件后 然后事件又像气泡一样回到最上层 往里走的过程叫做捕获,出来的过程叫冒泡