做飞机游戏经常使用的方向控制类 Direction.as
Direction.as文件
DirectionEvent.as文件
导入:
初略讲解:
利用事件管理的特性,当点击向上键,则up的逻辑值为true,当松开向上键,则up的逻辑值为false,且只要存在一个true值,也就是说存在一个人按钮被按下去,就持续调度事件DirectionEvent.DO!
静态属性讲解:
文章一开始有UP,DOWN等大写字母表示的数字,这个是方便在使用setKey的时候,第一个参数可以直接填写Direction.UP,则表示修改up的键值
面对新手需要讲解的几个地方:
1、
//事件帧频繁触发
private function onEnterFrame(e:Event):void{
var num:uint = Number(_up) + Number(_down) + Number(_left) + Number(_right);
if(num == 0){
return;
}
var eve:DirectionEvent = new DirectionEvent(DirectionEvent.DO);
eve.up = _up;
eve.down = _down;
eve.left = _left;
eve.right = _right;
dispatchEvent(eve);
}
上面这段代码,关于num值的获取,也许会有些人看不明白,其实意思就是把4个逻辑值强行转换为数字型,如果为false那么结果为0,如果4个都为false则加起来
num应该等于0,这就表明没有任何一个方向键按下,则return!不执行后面事件DirectionEvent.DO的调度
反之,不等于0,就说明必定有一个以上的按键按下,则调度事件!
2、
构造函数中使用了抽象类InteractiveObject
也就是说继承了InteractiveObject,或者间接继承了InteractiveObject,都可以作为方向的焦点
比如:Stage,Sprite,SimpleButton,Loader,MovieClip…………
效果地址:把焦点置于flash中,按键盘的上下左右方向键,就可以看到效果
http://www.xiaos8.com/uploads/pro/direction.swf
转:xiaos8