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

问题描述:

我是flash开发新手,我试图做的是当我按下游戏中的模式按钮时,它会改变障碍的速度。问题在于障碍物处于不同的关键帧中,并且速度的代码位于影片剪辑本身内。它如何在不同的关键帧中告诉障碍物他们的速度应该是什么?如何判断一个按钮是否在不同的关键帧中被按下?

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

var speed:Number = 5; 

    modeButton.onRelease = function() { 
     speed = 10; 
    } 

然后引用该变量以后你的障碍......

trace("speed: " + speed); 

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

+0

该问题被标记为AS2 –

+0

他还指定代码位于关键帧中,但您使用的是类特定的标识符。另外,在动画片段内声明的变量不是“全局”的。是为了这个目的而工作的范围。但不是“全球”。你的逻辑起作用,但是这些代码根本不适用于他。 –

+0

够公平 - 我错过了AS2标签。我会更新以反映你的观点。 – Flawsome

在动画片段内声明的变量在它们被定义的任何帧之后都可用(甚至当它回到帧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 
}