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

时间:2015-04-15 21:14:29

标签: performance timer actionscript-2 flash-cs6

我使用Flash CS6和AS2。

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

    speed = 6;
    boost = 16;
    boost_timer = 0;

我已将速度设置为6,并且我调用了16(Shift键的ASCII代码)" boost"。当我在主代码中调用它时,我还在计时器中添加了计数到5秒的计时器。这部分代码在这里:

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

-

    if(boost_timer >= 5)
    {
        boost_timer = 0;
        speed = 6;
    }

现在,我在这里尝试做的是,当我按下" boost"时,它会设置我的" boost_timer"为0(只有当它不在0时才会有效)。然后,它将开始增加我的" boost_timer"并设定我的速度"使原始速度加倍。

在第二段代码中,我将它设置为一旦达到5,它应该将计时器设置回0.但是,因为" boost_timer ++"已经设定,即使它已经回到0,它仍然会增加。但是,即使它达到5,它也只是重新启动计时器并继续将速度重置为6.下次我按下" boost"按钮,它应该设置" boost_timer"回到0并重新完成整个事情。

我打算稍后添加一些上电功能,这将限制你可以使用增强的次数,但是现在,我首先要确保我的游戏实际上能够使用增强多次。

到目前为止,我对编码的实际问题是每当我按下" boost"事实上,它确实提高了速度。然而,它保持在提升的速度,永远不会自行回归。出于某种原因,每当我按下"提升"再次按下按钮,同时已经提升,它恢复到原始速度。好像"提升"按钮正在作为激活和取消激活按钮用于提升,但我不知道为什么以及我的代码的哪一部分导致了这一点。

非常感谢您提供任何帮助!

1 个答案:

答案 0 :(得分:0)

newgrounds找到答案:

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))
     

但是,如果你想测试确切的点,那么只需要解除密钥,你必须使用一个latch sysetm:

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


UMH!已经有了事件监听器:adobeMX