我在class Player
内有这个:
public static function initClass():void {
Player.loadPlayerSprite();
Player.magnifyPlayerSpriteByNtimes(5);
Player.playerSprite.addEventListener(KeyboardEvent.KEY_DOWN, onKeyDown);
function onKeyDown(e:KeyboardEvent):void {
switch (e.keyCode) {
case Keyboard.RIGHT: moveRight();
case Keyboard.LEFT: moveLeft();
case Keyboard.DOWN: moveDown();
case Keyboard.UP: moveUp();
}
}
}
问题是,当我按下键盘时,为什么不调用函数onKeyDown()
。
您可能想知道为什么函数onKeyDown()
在函数initClass()
内。它曾经是一个私人静态功能,但它没有工作,所以我把它放在initClass()
但它也没有用。谢谢你的进步。
答案 0 :(得分:2)
您似乎正在向Player.playerSprite
对象添加事件侦听器。因此,只有Player.playerSprite
对象可以调用此侦听器。
如果您想全局附加您的监听器,请尝试以下方法:
public static function initClass(): void {
Player.loadPlayerSprite();
Player.magnifyPlayerSpriteByNtimes(5);
//add listener to stage
stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyDown);
}
private static function onKeyDown(e: KeyboardEvent): void {
//do whatever you want
}
如果您想将听众附加到Player.playerSprite
,请尝试关注此对象:
public static function initClass(): void {
Player.loadPlayerSprite();
Player.magnifyPlayerSpriteByNtimes(5);
//focus the object
stage.focus = Player.playerSprite;
Player.playerSprite.addEventListener(KeyboardEvent.KEY_DOWN, onKeyDown);
}
private static function onKeyDown(e: KeyboardEvent): void {
//do whatever you want
}