如何判断按钮是不是在不同的关键帧中被按下?
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
【讨论】:
以上是关于如何判断按钮是不是在不同的关键帧中被按下?的主要内容,如果未能解决你的问题,请参考以下文章