2016-10-13 00:16:48 点击量:8 标签: 收藏本文
AS3可以自定义事件并在自己需要的时候发送事件,下面介绍一下如何可以简单的构建一个发送事件的实例(当只需要发送事件,而且对事件对象没要求的时候建议用这种方法)
其实AS3中只需要用到dispatchEvent(e:Event)方法就可以做到发送事件了(事件的发送者必须继承EventDispatcher类或者实现IEventDispatcher接口才能使用这个方法)
下面举一个简单的实例:
Game类:
- package {
- import flash.display.MovieClip;
- import flash.events.Event;
- public class Game extends MovieClip {
- //MovieClip类继承了EventDispatcher所以可以调用
- static public const GAME_START:String = "gameStart";
- static public const GAME_OVER:String = "gameOver";
- public function Game() {
- // constructor code
- startGame();
- }
- public function startGame():void
- {
- //分发startGame事件
- dispatchEvent(new Event(GAME_START));
- }
- public function gameOver():void
- {
- //分发gameOver事件
- dispatchEvent(new Event(GAME_OVER));//新建事件传入String参数
- }
- }
- }
文档类(EventDemo):
- package {
- import flash.display.MovieClip;
- import flash.events.Event;
- public class EventDemo extends MovieClip {
- public var game:Game;
- //其中1、2、3、4为执行顺序
- public function EventDemo() {
- // constructor code
- game = new Game();
- game.addEventListener(Game.GAME_START,gameStart);
- game.addEventListener(Game.GAME_OVER,gameOver);
- game.startGame();//调用分发startGame事件(1)
- game.gameOver();//调用分发gameOver事件(3)
- }
- protected function gameStart(e:Event):void
- {
- trace(e);//(2)
- }
- protected function gameOver(e:Event):void
- {
- trace(e);//(4)
- }
- }
- }
在实例中,先在Game类中以属性的形式定义了事件名称(应该将名称定义为常量),然后再在Game类中定义了两个用于分发事件的dispatchEvent()并向其中传入Event对象。(注,用这种方法可以在其他任何需要的地方调用Game类中的startGame方法和gameOver方法用来分发事件),分发事件后,侦听器就会生效。
我们是一家提供综合软件外包与弱电工程服务的技术公司。
业务涵盖定制软件、管理系统、网站、小程序、APP、系统集成、网络布线、监控安防、门禁、机房建设及长期技术维护。
公司地址:湖北省宜昌市伍家岗区东站二路6号三峡(宜昌)大数据产业园海洋馆二楼A203室