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

Posted

技术标签:

【中文标题】如何在 CS6 AS2 中创建速度提升?【英文标题】:How do I create a speed boost in CS6 AS2? 【发布时间】:2015-06-22 01:14:41 【问题描述】:

我正在使用带有 AS2 的 Flash CS6。

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

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

我已将速度设置为 6,并且我将 16(Shift 键的 ASCII 代码)称为“加速”。当我在主代码中调用它时,我还添加了一个计时器,让嘘声计数到 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 并重新做整个东西。

我计划稍后添加某种加电功能,这将限制你可以使用加速的次数,但现在,我首先想确保我的游戏实际上能够使用加速多次。

到目前为止,我在编码方面遇到的实际问题是,每当我现在按下“增强”按钮时,它确实会提高速度。但是,它保持在提高的速度,并且永远不会自行返回。并且由于某种原因,每当我在已经提升的情况下再次按下“提升”按钮时,它都会恢复到原始速度。就好像“增强”按钮正在用作增强的激活和停用按钮,但我不知道为什么以及我的代码的哪一部分导致了这种情况。

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

【问题讨论】:

【参考方案1】:

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

但是,如果您只想测试钥匙被抬起的确切点,则必须使用闩锁系统:

if(Key.isDown(Key.UP))
    latch = true;

if(!Key.isDown(Key.UP) && latch)
    latch = false;
    // put your actions here

你可以看到只有 !Key.isDown(Key.UP) && 在按键被按下后锁存一次,所以它会执行动作,然后 将等到按键被按下然后再次释放以执行 再次行动。

您可能应该在键被抬起的地方运行一些功能,以降低速度并存储速度提升剩余值。

这个锁存器变量也应该在每一帧之前没有更多函数的地方设置为假,所以在事件程序进入下一帧后,它的值为假


嗯!已经为此创建了事件监听器:adobeMX

【讨论】:

以上是关于如何在 CS6 AS2 中创建速度提升?的主要内容,如果未能解决你的问题,请参考以下文章

如何创建由 xml 文件驱动的 Adob​​e Flash cs6 Actionscript 3 rtmp 视频播放器?

如何在 Tkinter 中创建带有标签的超链接?

在 Qt 设计器中创建要提升的自定义小部件

如何在Postgresql中创建序列数并应用在数据表

如何在Postgresql中创建序列数并应用在数据表

AS2 函数转 JS 函数