未选择 AS3 Keyevent 父级

Posted

技术标签:

【中文标题】未选择 AS3 Keyevent 父级【英文标题】:AS3 Keyevent parent not selected 【发布时间】:2014-08-25 01:56:46 【问题描述】:

我在正在制作的游戏的第一帧上有一个按钮,当我点击它时,它会转到第二帧。当游戏到达第二帧时,您可以通过按下键盘上的任何按钮来启动游戏,但每当游戏进入第二帧时,您必须先单击屏幕,然后才能使用箭头键。如何在不点击游戏的情况下使键盘输入工作

这是第一帧的一些代码

    var buttoon1:Bitmap = new Bitmap(new button1);
    var buttoon2:Bitmap = new Bitmap(new button2);
    var buttoon3:Bitmap = new Bitmap(new button3);

    var button:MovieClip = new MovieClip();
    button.addChild(buttoon1);
    button.x = 30;
    button.y = 50;
    button.width = 246;
    button.height = 43;
    addChild(button);

    button.addEventListener(MouseEvent.CLICK, buttonClicked);

    function buttonClicked(e:Event) 
        gotoAndStop(2);
        removeChild(button);
    

这是第二帧的一些内容

    stage.addEventListener(KeyboardEvent.KEY_DOWN, down);

    function down(e:KeyboardEvent) 
        if (speed == 0) 
            speed = 10;
        
    

注意:在我尝试使用键盘之前,我在游戏中点击了按钮(我的意思不是说键盘输入应该在选择另一个窗口时起作用)

【问题讨论】:

你可以尝试手动设置焦点 - 虽然我认为它不会改变任何东西:stage.focus = this 这是在您的 IDE 中进行测试时发生的,还是在任何时候都不管上下文?当您单击按钮时,您的应用程序不应该只是失去焦点... @LDMediaServices 无论我在哪里运行它都会发生。我看看能不能手动设置,但问题不是应用失去焦点,我猜只是舞台失去焦点 "stage.focus = this" 工作得很好,我想可能是我在删除按钮时选择了按钮,所以下一帧没有选择任何内容,谢谢! 这是一个很好的理论,但奇怪的是我以前从未遇到过这种情况。 【参考方案1】:

由于某种原因,当舞台进入第 2 帧时,舞台上没有任何东西具有焦点(根据评论,可能具有焦点的项目已从显示列表中删除)

您可以通过手动将焦点设置到显示列表上的任何内容来解决此问题

stage.focus = this;

【讨论】:

以上是关于未选择 AS3 Keyevent 父级的主要内容,如果未能解决你的问题,请参考以下文章

如何将 KeyEvent 发送到 JFrame 组件?

javafx KeyEvent触发两次

Android KeyEvent event.getRepeatCount

从 QML 生成 KeyEvent

Android中的Keyevent

什么触发(或生成)KeyEvent.ACTION_MULTIPLE?