如何判断按钮是不是在不同的关键帧中被按下?

Posted

技术标签:

【中文标题】如何判断按钮是不是在不同的关键帧中被按下?【英文标题】:How to tell if a button was pressed in a different key-frame?如何判断按钮是否在不同的关键帧中被按下? 【发布时间】:2016-01-03 10:16:27 【问题描述】:

我是 Flash 开发的新手,我正在尝试让当我在游戏中按下模式按钮时,它会改变障碍物的速度。问题是障碍物位于不同的关键帧中,而速度代码位于影片剪辑本身中。它如何告诉不同关键帧中的障碍物它们的速度应该是多少??

【问题讨论】:

【参考方案1】:

当用户单击模式按钮时,您需要设置一个变量。

    var speed:Number = 5;

    modeButton.onRelease = function() 
        speed = 10;
    

然后稍后为您的障碍引用该变量...

    trace("speed: " + speed);

这是一个超级简单的例子,希望对你有帮助!

【讨论】:

问题标记为 AS2 他还指定代码在关键帧内,但您使用特定于类的标识符。此外,在影片剪辑中声明的变量不是“全局的”。可以用于此目的的范围,是的。但不是“全球”。您的逻辑有效,但该代码对他根本不起作用。 很公平 - 我错过了 AS2 标签。我会更新以反映您的观点。【参考方案2】:

在动画剪辑中声明的变量在定义后的任何帧中都可以使用(即使当它循环回到第 1 帧时,它们仍然可用,即使它们没有在第 1 帧中声明,但最好做法是在第一帧中声明)。

所以基本上......你的问题不应该真的存在。只需将您的数据存储在第 1 帧上声明的变量中。存在问题的唯一方法是,如果您仅在函数本身中有该变量,因此它仅对该函数是本地的......这将是一个问题,无论电影剪辑和关键帧。

只是不要那样做。在函数外声明变量,在函数内使用。

// put this on frame 1
var speed = 1; // this will be accessible anywhere in the clip

// put this wherever your button appears (I assume on frame 1 as well)
yourBtnName.onRelease = function() 
    speed = 1.5; // the change will be refleced anywhere that uses it


// put this on some other frame and call it at any point
function doSomething() 
    trace(speed); // before clicking the button this will trace 1, after 1.5

【讨论】:

以上是关于如何判断按钮是不是在不同的关键帧中被按下?的主要内容,如果未能解决你的问题,请参考以下文章

使用 LESS CSS 的 CSS 关键帧中的 @ 符号和变量

如何检测音量上下是不是被按下

Flash CS6 编辑多个关键帧

关键帧中的非动画属性在 iOS 上被忽略

在 Swift 中有效地取消关键帧动画

在flash如何制作一个的鼠标跟随特效