Performance 如何在CS6 AS2中创建速度提升?

Performance 如何在CS6 AS2中创建速度提升?,performance,timer,actionscript-2,flash-cs6,Performance,Timer,Actionscript 2,Flash Cs6,我在AS2上使用Flash CS6 我在高中的一个游戏设计课上,我们学习了一些基本的编码。我目前正在尝试在按下shift按钮时添加“速度提升”功能。你应该能够按下它,这会给你5秒的提速。在那5秒钟之后,你会恢复到正常速度。以下是我所做的变量: speed = 6; boost = 16; boost_timer = 0; 我已经将速度设置为6,并将16(Shift键的ASCII码)称为“boost”。我还添加了一个计时器,当我在主代码中调用时,boos可以计数到5秒。以

我在AS2上使用Flash CS6

我在高中的一个游戏设计课上,我们学习了一些基本的编码。我目前正在尝试在按下shift按钮时添加“速度提升”功能。你应该能够按下它,这会给你5秒的提速。在那5秒钟之后,你会恢复到正常速度。以下是我所做的变量:

    speed = 6;
    boost = 16;
    boost_timer = 0;
我已经将速度设置为6,并将16(Shift键的ASCII码)称为“boost”。我还添加了一个计时器,当我在主代码中调用时,boos可以计数到5秒。以下是该部分代码:

    if(Key.isDown(boost))
    {
        speed = 0;
        boost_timer++;
        speed = 12
    }
-

现在,我在这里要做的是,当我按下“boost”时,它会将我的“boost_timer”设置为0(只有当它不在0时才有意义)。然后,它将开始增加我的“boost_timer”,并将我的“speed”设置为原来速度的两倍

在第二段代码中,我将其设置为一旦达到5,它就应该将计时器设置回0。然而,因为“boost_timer++”已经被设置,即使它被设置回0,它仍然会增加。但是,即使达到5,它也会简单地重新启动计时器并继续将速度重置为6。下次我按下“boost”按钮时,它应该将“boost_timer”设置回0,然后重新执行整个操作

我计划在以后添加一些加电功能,这将限制你可以使用boost的次数,但现在,我想首先确保我的游戏能够多次使用boost

到目前为止,我在编码方面遇到的实际问题是,每当我现在按下“boost”按钮时,它实际上会提高速度。然而,它保持在加速状态,永远不会自行返回。出于某种原因,每当我在已经加速的情况下再次按下“加速”按钮时,它就会恢复到原来的速度。这就好像“boost”按钮是一个启动和停用按钮,但我不知道为什么,我的代码的哪一部分是造成这种情况


非常感谢您能给予的任何帮助

从以下方面为您找到了答案:

但是,如果您只想测试钥匙被拔出的确切位置,则必须使用闩锁系统:

if(Key.isDown(Key.UP)){
    latch = true;
}
if(!Key.isDown(Key.UP) && latch){
    latch = false;
    // put your actions here
}
你可以看到,只有这样!按下键后,Key.isDown(Key.UP)&锁存一次,以便执行操作,然后 将等待,直到按下该键,然后再次释放以执行此操作 再次行动

您可能应该在键被提升的位置运行一些函数,以降低速度并存储速度提升的剩余值

此外,该锁存变量应在没有更多函数之前的每一帧上设置为false,因此事件后程序进入下一帧,其值为false


嗯!!已为此创建了一个事件侦听器:

If you just want to test if the key isnt pressed at the time, just use:
if(Key.isDown(Key.UP) == false)
or
if(!Key.isDown(Key.UP))
if(Key.isDown(Key.UP)){
    latch = true;
}
if(!Key.isDown(Key.UP) && latch){
    latch = false;
    // put your actions here
}