2012-02-21 42 views
0

我的Flash動作層包含整個源代碼。 我的問題是:爲什麼動作層會以多次重新執行(新變量)?Flash動作得到反覆執行

下面的代碼片段演示了我的意思:

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

    notyetexecuted=false; 
} 
} 

這個總是返回true,這意味着該行爲層再次執行。來自java的 這對我沒有任何意義。

/編輯:我忘了提,我有一個間隔功能(仍然布爾應該是假的,並addNetStream應該什麼都不做)

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

可以ANY1解釋爲什麼是這樣的話和Flash如何執行層? 歡呼聲。

回答

1

正是因爲在這條線測試:

if (notyetexecuted = true) 

它設置notyetexectuted真應該是:

if (notyetexecuted == true) 

注意雙==

+1

OMG我很愚蠢......在與Java ^^」感謝這麼多 – Wandang 2012-02-21 10:49:15

+0

@Wandang日食發生難道不 - 我們都這樣做哥們,可以考慮使用它是建立在Eclipse之上Flash Builder中:d – Neil 2012-02-21 10:50:22

+0

我可能會引發在FDT中 - 它也建立在eclipse之上,並且擊敗Flash Builder,如果你問我的話。 – weltraumpirat 2012-02-21 11:14:13

1

使用相同運營商。

if (notyetexecuted == true) { 
    // ... 
} 
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 
} 
+0

感謝您的洞察! – Wandang 2012-02-21 11:20:11

0

很明顯,你有你需要的答案。

但是,對於它的價值,這個測試:

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

...可以安全地簡化爲這樣:

if (notyetexecuted) { 
    // ... 
} 

...因爲notyetexecuted是一個布爾值,並且只能爲爲真

使用這種風格使你的代碼更易於閱讀,並避免了「=」/「==」陷阱。

祝你好運!

+0

ha!我有時會使用那種風格,但並不一致。我會努力堅持,thx。 – Wandang 2012-02-22 08:05:32