AS3自定义事件以及发送事件(1)——发送事件

AS3自定义事件以及发送事件(1)——发送事件

一、目的

1、想:自定义类的时候,自定义类给舞台上面发送小

二、参考

1、AS3自定义事件以及发送事件(1)——发送事件

  • 总结:good:发现可以实现
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方法用来分发事件),分发事件后,侦听器就会生效。