·您当前的位置:首页 > 技术教程 > AS2与AS3技术 >

[AS3]as3中Evevt和EventDispatcher类用法

时间:2015-08-26 12:29酷播
Evevt和EventDispatcher类在as3的事件机制中是很重要的角色,EventDispatcher类

事件的发起和捕获,发生在同一个对象身上。

Evevt和EventDispatcher类在as3的事件机制中是很重要的角色,dispatchEvent()是EventDispatcher类的一个事件发送方法,它可以发送出Event类或其子类的实例,在as3中所有的显示对象都可以发送事件,因为as3中所有的显示对象都是EventDispatcher子类DisplayObject的实例。

发送事件有三种方式:继承EventDispatcher,如sprite等显示对象、复合EventDispatcher或其子类、实现IEventDispatcher接口。

下面是一个简单的例子,仅供参考,为了演示把简单的问题复杂话了,首先画一个矩形,点击矩形后发送一个事件,矩形接收事件后alpha变为0;

自定义事件:

  1. package{ 
  2. import flash.events.Event; 
  3. public class MyEvent extends Event{ 
  4. public static const ALPHA:String = "alpha"; 
  5. public function MyEvent(type:String, bubbles:Boolean=false, cancelable:Boolean=false){ 
  6. super(type, bubbles, cancelable); 
  7. } 
  8. } 
  9. } 
  10.  
  11. package{ 
  12. import flash.display.Sprite; 
  13. public class Sample extends Sprite{ 
  14. public function Sample(){ 
  15. this.graphics.beginFill(0xff6600); 
  16. this.graphics.drawRect(50,50,100,50); 
  17. this.graphics.endFill(); 
  18. this.addEventListener(MyEvent.ALPHA,blackHandler); 
  19. } 
  20. private function blackHandler(evt:MyEvent){ 
  21. this.alpha = 0; 
  22. } 
  23. } 
  24. } 

主类:

  1. package{ 
  2. import flash.display.Sprite; 
  3. import flash.events.MouseEvent; 
  4. public class Main extends Sprite{ 
  5. private var _sample:Sample; 
  6. public function Main(){ 
  7. _sample = new Sample(); 
  8. //CuPlayer.com提示:注册事件侦听器 
  9. _sample.addEventListener(MouseEvent.CLICK,clickHandler); 
  10. addChild(_sample); 
  11. } 
  12. private function clickHandler(evt:MouseEvent){ 
  13. //CuPlayer.com提示:触发并广播事件 
  14. _sample.dispatchEvent(new MyEvent(MyEvent.ALPHA)); 
  15. } 
  16. } 
  17. } 

注:在as3中只有事件的发送者才能侦听事件。

在Main类中sample实例发送的事件也只有sample注册的侦听器才能侦听。
这个例子很简单,只是为了展示事件的发送接收,你还可以扩展自定义的Event类,带上你想发送的参数。
 

热门文章推荐

请稍候...

保利威视云平台-轻松实现点播直播视频应用

酷播云数据统计分析跨平台播放器