我是ActionScript的新手,并且正在按照教程here开始使用FlashDevelop。我将其设置为每次KEY_DOWN
事件移动项目而不是使用框架事件,但我的KEY_DOWN
事件永远不会被触发。我很快添加了一个MOUSE_DOWN
事件来测试问题的严重程度。
我正在添加侦听器,因为我的Paddle(Sprite的扩展名)项目已添加到舞台中:
private function addedToStage(e:Event) : void {
// Remove this event listener
removeEventListener(Event.ADDED_TO_STAGE, addedToStage);
// Add the picture
addChild(pic);
// Set the location of the item in the middle of the screen one
// height length of the image down.
this.y = this.height;
this.x = (this.stage.stageWidth - this.width) / 2;
// Add the keyboard listener (broken).
stage.addEventListener(KeyboardEvent.KEY_DOWN, this.keyDownHandler, false, 0, true);
// Add the mouse listener (works).
stage.addEventListener(MouseEvent.MOUSE_DOWN, this.mouseDown, false, 0, true);
// Set the focus to the stage.
stage.focus = stage;
}
我的keyDownHandler函数中有一个断点,它永远不会被调用。
这可能是this question的副本,但我已经在做了该问题的答案所描述的内容,在评论中他解释说,他不知道是什么解决了问题,只是突然开始工作。< / p>
该问题的另一个流行答案提到this article这就是为什么我的代码中有一行将焦点重新设置到舞台上。我的舞台上没有别的东西。
可能会发生什么?
修改
这是我的听众代码:
private function keyDownHandler(e:KeyboardEvent):void {
var increment:Number; // Here is my breakpoint
if (e.keyCode == 65 || e.keyCode == 37) {
increment = -5;
} else if(e.keyCode == 68 || e.keyCode == 39) {
increment = 5;
}
var newX:Number = this.x + 5;
if (newX > 0 && newX + this.width < this.stage.width) {
this.x = newX;
}
}
答案 0 :(得分:3)
问题与事件本身无关,而是我如何测试它是否被解雇。您不能在声明上放置断点。
FlashDevelop将允许您在那里设置断点,但调试器实际上不会在此时停止。
移动拨片的代码不起作用(此时对我来说并不奇怪),但如果我将断点移动到if语句中的行(或执行实际操作时的任何其他行,例如跟踪)突然它打破了。现在我想起来,即使我使用过的其他语言都有这种行为,我对IDE的过于宽容,会在这种情况下将断点移到最近的可用行。 / p>