Flex的事件机制很简单,但是有几种不同的使用方式。我们作为使用flex作为开发工具的人,我们熟练掌握flex事件的几种使用方法,就OK了。
第一种:线上事件
通过用户的界面操作,直接发生的事件。我们通常称之为线上事件。
例子:
<mx:button id="demo" label="button1" click="show.text='I'm a good man'"/>
<mx:text id="show" />
第二种:通道事件
通过用户的界面操作,产生事件,并通过通道将事件传递给事件处理函数。
例子:
在as程序段中有一段代码:
public function eventtest(e:MouseEvent):void{
...................
}
在mxml程序段中有一段代码:
<mx:button id="demo1" label="button2" click="eventtest(event)"/>
在这个例子中,用户点击button2按钮,就会触发一个事件,通道就会将事件event(event这个事件是自动默认产生的)传递给事件处理函数,进行事件的处理
第三种:注册监听事件
我们现在as程序段中,将事件注册到某个组件上。当事件发生时,flex的事件监听线程根据事件的name值,捕获到事件,将事件分发给相应的组件。然后回调事件处理函数。
例子:
在as程序段中注册事件:
public function eventhandler():void{
buttonid.addEventListener(MouseEvent.Click,handler1);
} //这个函数一般都会在上一级的容器中的creatcomplete调用执行,初始化,注册事件。
public function handler1(e:Event):void{
......................
}
在mxml程序段中有一段如下代码:
<mx:button id="buttonid" label="button3" />
当用户点击button3按钮时,flex自然回将调用handler1函数进行事件的处理
第四种:自定义事件
这个很少会用到,因为flex已经提供了足够的事件通道
这个也比较复杂点,通常做法就是给自定义的组件添加新的事件通道,其实个人觉得多此一举。
附加:常用鼠标事件