我试图制作坦克游戏,我可以移动坦克,让他们互相射击等等......我坚持用Flash Pro创建外部类,因为我习惯了像Java这样的OOP语言。我创建了一个代表所有坦克的Tank类。以下是此类的代码:
package src
{
import flash.display.MovieClip;
import flash.events.KeyboardEvent;
import flash.ui.Keyboard;
public class Tank extends MovieClip
{
public function Tank():void {
this.addEventListener(KeyboardEvent.KEY_DOWN, move);
this.addEventListener(MouseEvent.CLICK, test);
}
protected function move(event:KeyboardEvent):void {
trace("key down");
switch (event.keyCode) {
case Keyboard.UP: {
this.y += -5;
break;
}
case 40: {
this.y += 5;
break;
}
case Keyboard.LEFT: {
this.x += -5;
break;
}
case Keyboard.RIGHT: {
this.x += 5;
break;
}
}
}
}
}
问题是当我按任意键时,动作监听器似乎永远不会被调用。 trace()未被调用。但我试图添加一个鼠标监听器只是为了测试它的工作原理。所以我猜它是Keyboard事件监听器类的问题?我在网上看到的每个人都使用stage.addEventListener(KeyboardEvent.KEY_DOWN,move)方法。
有谁可以告诉我为什么它不起作用?有没有解决方案?(只有通过添加外部课程),谢谢!
答案 0 :(得分:0)
尝试将关键监听器添加到舞台。
stage.addEventListener(KeyboardEvent.KEY_DOWN, move);
当应用程序处于焦点时,舞台将始终能够检测到关键事件。