自定义事件
自定义事件
记得第一次尝试用Flash做游戏时,教程所讲最重要的一点是利用Flash的自定义事件机制实现观察者模式,下面是一个子弹打小球的例子。
Main类
var ball=new Ball(this);
ball.addEventListener("destroy",ballDestroy);
ballArr.push(ball); //添加进数组
private function ballDestroy(e:Event):void{
for(var i in ballArr){
if(ballArr[i]==(e.target as Ball)){
ballArr.splice(i,1);
break;
}
}
}
在主控制类建立球对象的同时添加其被子弹击中的事件监听。当引发事件"destroy"时,执行ballDestroy函数。
下面的伪代码也是在主控制类Main中。
if(子弹对象.hitTestObject(球对象)){
球对象.hitDestroy();
}
Ball类
public function hitDestroy():void{
this.dispatchEvent(new Event("destroy"));
}
当子弹对象和球对象碰撞时执行Ball类中的hitDestroy函数,引发事件"destroy"。