为什么事件触发时不调用事件侦听器函数?
Why is not event listener function called when event fired?
我里面有这个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()
中,但它也没有用。感谢提前。
您似乎正在将事件侦听器添加到 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
}
我里面有这个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()
中,但它也没有用。感谢提前。
您似乎正在将事件侦听器添加到 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
}