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

[AS3]AS3事件以及发送事件的范例

时间:2016-08-24 10:57酷播
AS3可以自定义事件并在自己需要的时候发送事件,下面介绍一下如何可以简单的构建一个发送事件的实例(当只需要发送事件,而且对事件对象没要求的时候建议用这种方法)

AS3可以自定义事件并在自己需要的时候发送事件,下面介绍一下如何可以简单的构建一个发送事件的实例(当只需要发送事件,而且对事件对象没要求的时候建议用这种方法)

其实AS3中只需要用到dispatchEvent(e:Event)方法就可以做到发送事件了(事件的发送者必须继承EventDispatcher类或者实现IEventDispatcher接口才能使用这个方法)

下面举一个简单的实例:

Game类:

  1. package { 
  2.  
  3. import flash.display.MovieClip; 
  4. import flash.events.Event; 
  5.  
  6.  
  7. public class Game extends MovieClip { 
  8.  
  9. //MovieClip类继承了EventDispatcher所以可以调用 
  10. static public const GAME_START:String = "gameStart"
  11. static public const GAME_OVER:String = "gameOver"
  12.  
  13. public function Game() { 
  14. // constructor code 
  15. startGame(); 
  16.  
  17. public function startGame():void 
  18. //分发startGame事件 
  19. dispatchEvent(new Event(GAME_START)); 
  20.  
  21. public function gameOver():void 
  22. //分发gameOver事件 
  23. dispatchEvent(new Event(GAME_OVER));//新建事件传入String参数 

 文档类(EventDemo):

  1. package { 
  2.  
  3. import flash.display.MovieClip; 
  4. import flash.events.Event; 
  5.  
  6.  
  7. public class EventDemo extends MovieClip { 
  8.  
  9. public var game:Game; 
  10. //其中1、2、3、4为执行顺序 
  11. public function EventDemo() { 
  12. // constructor code 
  13. game = new Game(); 
  14. game.addEventListener(Game.GAME_START,gameStart); 
  15. game.addEventListener(Game.GAME_OVER,gameOver); 
  16. game.startGame();//调用分发startGame事件(1) 
  17. game.gameOver();//调用分发gameOver事件(3) 
  18.  
  19. protected function gameStart(e:Event):void 
  20. trace(e);//(2) 
  21.  
  22. protected function gameOver(e:Event):void 
  23. trace(e);//(4) 

在实例中,先在Game类中以属性的形式定义了事件名称(应该将名称定义为常量),然后再在Game类中定义了两个用于分发事件的dispatchEvent()并向其中传入Event对象。(注,用这种方法可以在其他任何需要的地方调用Game类中的startGame方法和gameOver方法用来分发事件),分发事件后,侦听器就会生效。

热门文章推荐

请稍候...

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

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