【发布时间】:2011-10-10 10:34:28
【问题描述】:
我正在尝试制作一个坦克游戏,我可以在其中移动坦克,让它们互相射击等等......我坚持使用 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()。但我试图添加一个鼠标监听器只是为了测试并且它有效。所以我猜它是键盘事件监听器类的问题?我在网上看到的每个人都使用 stage.addEventListener(KeyboardEvent.KEY_DOWN, move) 方法。
谁能告诉我为什么它不起作用?有什么解决办法吗?(请只添加外部类)谢谢!
【问题讨论】:
标签: actionscript-3 class keyboard external actionlistener