Actionscript 3 AS3键关闭侦听器返回帧后不工作

Actionscript 3 AS3键关闭侦听器返回帧后不工作,actionscript-3,Actionscript 3,我有两个框架,一个标记为mainFrame,另一个标记为secondFrame。当程序启动时,用户单击一个名为start的按钮,该按钮将用户发送到secondFrame。一旦用户进入第二帧,他们按下的任何键的键码都会被跟踪,如果按下的键的键码为68,程序将返回到主机。这很好,问题是当用户再次单击按钮并返回到第二帧时,KeyCode不会跟踪该帧。 以下是大型机上的代码: stop(); start.addEventListener(MouseEvent.CLICK, startGame); fu

我有两个框架,一个标记为mainFrame,另一个标记为secondFrame。当程序启动时,用户单击一个名为start的按钮,该按钮将用户发送到secondFrame。一旦用户进入第二帧,他们按下的任何键的键码都会被跟踪,如果按下的键的键码为68,程序将返回到主机。这很好,问题是当用户再次单击按钮并返回到第二帧时,KeyCode不会跟踪该帧。 以下是大型机上的代码:

stop();
start.addEventListener(MouseEvent.CLICK, startGame);

function startGame(e:MouseEvent):void
{
    gotoAndStop("secondFrame");
}
以及第二帧上的代码:

stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDownCheck);

function keyDownCheck(event:KeyboardEvent):void
{
    trace(event.keyCode);
    if(event.keyCode == 68)
    {
        gotoAndStop("mainFrame");
        stage.removeEventListener(KeyboardEvent.KEY_DOWN, keyDownCheck);
    }
}

我确信我正在做一些愚蠢的明显的事情,这阻止了它的工作,但我就是不知道是什么

将第二帧代码更改为:

stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDownCheck);
function keyDownCheck(event:KeyboardEvent):void
{
    trace(event.keyCode);
    if(event.keyCode == 68)
    {
        stage.removeEventListener(KeyboardEvent.KEY_DOWN, keyDownCheck);
        gotoAndStop("mainFrame");        
    }
}

尝试将this.setFocus添加到第二帧的代码中

我找到了答案!好吧,Zavr和Vesper实际上说它xD的焦点是在应用程序中设置的,所以stage.focus=这是有效的。我不知道我做了什么导致了错误,当我第一次尝试它,但它现在的工作xD谢谢大家

无论何时转到另一帧并*转到另一帧,都会销毁上一帧并重新创建目标帧。检查两次stage是否都是同一个实例,并在添加侦听器时检查它是否不为null。这可能不起作用,因为这是为了解决跟踪出现的问题,如果不是在第二帧,OP有一个相反的问题。似乎仍然不起作用。奇怪的是,我试了十次,有一次甚至在第二帧的第二次访问时也能用,而另一次甚至在我第一次访问第二帧时都不能用。。。所有其他的时候都和以前一样。可能是舞台。设定焦点?可能,我只是习惯了灵活。不确定flash应用程序中会出现什么情况双向都会导致此错误:1061:通过静态类型flash的引用调用可能未定义的方法setFocus。display:Stage。可能是我又犯了一个愚蠢的错误