Flash操作会反复执行

时间:2012-02-21 10:44:15

标签: flash actionscript-2

我的Flash动作图层包含完整的源代码。 我的问题是:为什么动作层会以新的开始(新变量)执行多次?

以下代码段演示了我的意思:

var notyetexecuted:Boolean=true;
function addNetStream(counter) {
if (notyetexecuted = true) {
    trace(notyetexecuted);

    notyetexecuted=false;
}
}

这总是返回true,这意味着再次执行actions层。 来自java,这对我来说没有意义。

/ edit:我忘了提到我有一个间隔函数(仍然布尔值应该为false而addNetStream应该什么都不做)

function User():Void {
trace("Aktuelle Anzahl User: " + counter);
if (counter > prevcounter) {
    addNetStream(counter);
    counter++;
} else if (counter < prevcounter) {
}
}
myInterval = setInterval(this, "User", 3000);

可以解释为什么会出现这种情况以及Flash如何执行图层? 欢呼声。

4 个答案:

答案 0 :(得分:1)

这是因为你在这条线上的测试:

if (notyetexecuted = true)

设置notyetexectuted为true它应该是:

if (notyetexecuted == true)

请注意double ==

答案 1 :(得分:1)

使用等号运算符。

if (notyetexecuted == true) {
    // ...
}

答案 2 :(得分:0)

如果时间轴中有多个帧,Flash会读取并循环播放。每次返回包含操作的帧时,它们都会再次运行。

此外,您还可以体验双重火灾的额外事件。使用下面的代码(默认情况下在flashdevelop中)。

public function Main():void 
{
    if (stage) init();
    else addEventListener(Event.ADDED_TO_STAGE, init);
}

public function init(e:Event = null):void 
{
    removeEventListener(Event.ADDED_TO_STAGE, init);
    // entry point
}

答案 3 :(得分:0)

很明显,你得到了你需要的答案。

但是,对于它的价值,这个测试:

if (notyetexecuted == true) {
    // ...
}

...可以安全地简化为:

if (notyetexecuted) {
    // ...
}

...因为notyetexecuted是一个布尔值,只能是 TRUE FALSE

使用此样式可让您的代码更易于阅读,并避免“=” / “==”陷阱。

祝你好运!