Animate CC 前进到下一帧并注释掉 gotoAndStop?
Animate CC advances to the next frame with gotoAndStop commented out?
我正在编写这段代码来测试您的反应时间,然后进入下一帧。它显示一个框,然后计算框出现时间和用户按下 [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
原始代码:https://docs.google.com/document/d/1GRZIaKAdRNu3z3aPjjXNcgqMl2BhR-ZBT6gU7OeSbWQ/edit?usp=sharing
在您的其中一个框架上,您向舞台添加了按键事件侦听器。那可能就是您的问题所在。因此,当您按下任意键时,它会调用 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);
}
}
我正在编写这段代码来测试您的反应时间,然后进入下一帧。它显示一个框,然后计算框出现时间和用户按下 [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 原始代码:https://docs.google.com/document/d/1GRZIaKAdRNu3z3aPjjXNcgqMl2BhR-ZBT6gU7OeSbWQ/edit?usp=sharing
在您的其中一个框架上,您向舞台添加了按键事件侦听器。那可能就是您的问题所在。因此,当您按下任意键时,它会调用 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);
}
}