使用gotoAndStop注释掉Animate CC进入下一帧?

时间:2016-12-26 17:31:48

标签: actionscript-3 flash actionscript jquery-animate

我正在编写此代码来测试您的反应时间,然后前进到下一帧。它显示一个框,然后计算框出现时和使用时按[A]之间的时间差。 Heer是我的代码

import flash.utils.Timer;
import flash.events.Event;
import flash.utils.getTimer;

stop();
    var canPress = false;
    var startClock:Timer = new Timer(4000+Math.random()*6000, 1);
    grbox.y = -500;
    startClock.start();
    var startTime:int = 0;

function displayBox(evt:Event):void{
    canPress = true;
    grbox.y = 143;
    var startTime:int = getTimer();
}

function Tpressed(e:KeyboardEvent):void
{
   if(e.keyCode==Keyboard.A){
        if(canPress==true){
        var endTime:int = getTimer();
        score1 = endTime-startTime;

        if(score2<0){
            //gotoAndStop(3);
        }
        else{
            //gotoAndStop(4);
        }
   }
   }

}

stage.addEventListener(KeyboardEvent.KEY_DOWN, Tpressed);
startClock.addEventListener(TimerEvent.TIMER, displayBox);

出于某种原因,如果我只是垃圾邮件[A]按钮,它将前进到下一帧。为什么会这样???!我的'gotoAndStop(4);'命令被注释掉,所以它应该任何,但它是。

编辑:这是我的.fla文件:https://drive.google.com/open?id=0BxtLreFIVnSWR2VPSGdSaHZGaVk RAW CODE:https://docs.google.com/document/d/1GRZIaKAdRNu3z3aPjjXNcgqMl2BhR-ZBT6gU7OeSbWQ/edit?usp=sharing

1 个答案:

答案 0 :(得分:2)

在你的一个框架上,你为舞台上的按键添加了一个事件监听器。这可能就是你的问题所在。因此,当您按任意键时,它会调用pressed函数以及Tpressed函数。并且由于在每个函数中检查的密钥是“A”,因此两个函数都执行它们的if块。并且两个if块都调用gotoAndStop方法。

如果不确切地知道您要在大图中完成什么,可以通过在离开该帧时删除pressed函数的事件侦听器来解决此问题。

看起来像:

function pressed(e:KeyboardEvent):void
{
   if(e.keyCode==Keyboard.A){
        gotoAndStop(Math.round(Math.random()+2));
        // remove the event listener since we are leaving this frame and you apparently only want this function to work on this frame
        stage.removeEventListener(KeyboardEvent.KEY_DOWN, pressed); 
   }
}