gpt4 book ai didi

flash - AS3 KeyboardEvents 在我点击屏幕按钮后才会触发

转载 作者:行者123 更新时间:2023-12-02 08:54:48 24 4
gpt4 key购买 nike

所以这是我的设置:

我的文档类是 Main.as(它扩展了 MovieClip)。以下代码在我的 Main.as 中。

我已经在我的类定义中声明了所有这些变量:

private var holder:MovieClip;
private var leftButton:SimpleButton;
private var rightButton:SimpleButton;

在构造函数中...

holder = new MovieClip();
addChild(holder);
holder.addEventListener(KeyboardEvent.KEY_UP, handleKeyboardEvent);

leftButton = new Arrow();
rightButton = new Arrow();

holder.addChild(leftButton);
holder.addChild(rightButton);

leftButton.x = 50;
leftButton.rotation = 180;
rightButton.x = 150;

leftButton.y = rightButton.y = 50;

leftButton.addEventListener(MouseEvent.CLICK, handlePaging);
rightButton.addEventListener(MouseEvent.CLICK, handlePaging);

...在构造函数之外...

public function handleKeyboardEvent ( e:KeyboardEvent ) {
trace("got a keyboard event");

trace("e.charCode : " + e.charCode);
trace("e.keyCode : " + e.keyCode);
switch (e.keyCode) {
case 37: //left arrow
showPreviousMoment();
break;
case 39: //right arrow
showNextMoment();
break;
}


}

这两个按钮是我在库中拥有的 Arrow 影片剪辑的实例。 Arrow 影片剪辑中只有图形(在它的属性对话框中,基类是 flash.display.SimpleButton)。

我希望用户能够按屏幕上的箭头或键盘箭头键来向前和向后翻页。

所以...当我测试电影或将其发布为应用程序时,按左右键盘键没有任何作用。然而......在我点击屏幕箭头之后键盘事件被拾取!为什么最初没有收到我的键盘事件?为什么单击屏幕按钮会使“持有人”开始接收事件?

更新

除了实例化“holder”和添加监听器之外,我还注释掉了我的所有代码。KeyboardEvents 没有被持有者听到。

更新...回答

所以我发现如果我想全局听到 KeyboardEvent,我应该将 stage 注册为监听器。所以这成功了:

stage.addEventListener(KeyboardEvent.KEY_UP, handleKeyboardEvent);

Colin Moock 书中的信息:

Keyboard-input events that trigger application-wide commands are typically handled globally, by listeners registered with Flash Player's Stage instance. By contrast, keyboard-input events that trigger a specific interface-element response are typically handled by listeners registered with the object that currently has keyboard focus.

所以我想在我的初始版本中,当我点击屏幕上的箭头按钮时,我以某种方式将键盘焦点提供给了“holder;”。

最佳答案

通常您点击的对象会获得焦点。这确实会影响听众,这就是将它添加到舞台时它起作用的原因。

当您点击其中任何一个时,您的“holder”对象获得焦点,因此事件被触发。现在你做得很好,你把它添加到舞台上了。

关于flash - AS3 KeyboardEvents 在我点击屏幕按钮后才会触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5758978/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com