我对 AS3 很陌生,我正在尝试制作一个简单的 Flash 游戏原型。现在,我要做的就是让 flash 告诉我它实际上正在接收用户的键输入,但我遇到了以下两个问题:
在我向舞台添加事件侦听器的行中,我收到一个 Error1061:通过静态类型 Class 的引用调用可能未定义的方法 addEventListener。
- 我的研究使我相信这是因为我的 Backlayer 类没有扩展 EventDispatcher,但我不能扩展它,因为 Backlayer 必须扩展 MovieClip
在这些相同的行上,我试图告诉代码在发生此类事件时执行命名函数,但我收到 error1120 告诉我两者都是未定义的属性。
- 我认为这可能是因为该类尚未扩展事件调度程序?
我对 AS3 的理解都是自学的,我仍在努力学习该语言的礼仪,所以如果这是一个非常简单的问题,我深表歉意,但我无法仅通过谷歌搜索找到答案. 这是我的代码:
package {
import flash.display.MovieClip;
import flash.events.KeyboardEvent;
import flash.ui.Keyboard;
import flash.display.Stage;
import flash.events.EventDispatcher;
public class Backlayer extends MovieClip
{
Stage.addEventListener(KeyboardEvent.KEY_DOWN,keyDownHandler);
Stage.addEventListener(KeyboardEvent.KEY_UP,keyUpHandler);
public function keyDownHandler(e:KeyboardEvent):void
{
if(e.keyCode == Keyboard.LEFT)
{
trace("left pressed");
}
else if(e.keyCode == Keyboard.RIGHT)
{
trace("right pressed");
}
else if(e.keyCode == Keyboard.UP)
{
trace("up pressed");
}
else if(e.keyCode == Keyboard.DOWN)
{
trace("down pressed");
}
}
public function keyUpHandler(e:KeyboardEvent):void
{
if(e.keyCode == Keyboard.LEFT)
{
trace("left released");
}
else if(e.keyCode == Keyboard.RIGHT)
{
trace("right released");
}
else if(e.keyCode == Keyboard.UP)
{
trace("up released");
}
else if(e.keyCode == Keyboard.DOWN)
{
trace("down released");
}
}
}
}