2012-02-21 14 views
0

私のフラッシュアクションレイヤーにはソースコード全体が含まれています。 私の質問は次のとおりです。なぜ、アクションレイヤーは新しいスタート(新しい変数)で何度も実行されるのですか?フラッシュアクションが何度も実行される

次のコードスニペットは、私が何を意味するかを示しています。

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

    notyetexecuted=false; 
} 
} 

この常にアクション層が再び実行されることを意味するtrueを返します。 これはjavaから来て、これは私にとって意味をなさない。

/編集:私は、インターバル機能を持​​っていることを言及するのを忘れてしまった(まだブール値が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のレイヤーどのように実行するか理由を説明any1だろうか? 歓声。

答えて

1

それが原因で、このライン上のテストは次のとおりです。

if (notyetexecuted = true) 

それがあるべき真にnotyetexectuted設定です:

if (notyetexecuted == true) 

注ダブル==

+1

OMG私は – Wandang

+0

@Wandangそんなに感謝「^^のjavaと日食で起こるwouldntは...そうダムだ - 我々はすべてそれが日食の上に構築されたFlash Builderを使用することを検討して、バディん: – Neil

+0

は私が投げる可能性がありますDあなたが私に尋ねるならば、それはまた、日食の上に構築され、Flash Builderを打つ。 – weltraumpirat

1

が等しいを使用しますオペレーター。

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

タイムラインに複数のフレームがある場合、Flashはそれを読み取りループします。アクションを含むフレームに戻るたびに、それらは再び実行されます。

また、追加されたイベントの二重発火を経験することができます。 folowingコードを使用してください(デフォルトでは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

0

あなたが必要とする回答があることは明らかです。

しかし、何が価値があるのは、このテストのために:

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

...無事にこのように単純化することができます。

if (notyetexecuted) { 
    // ... 
} 

...ブールnotyetexecutedであるから、とだけすることができますTRUEまたはFALSEです。

は、このスタイルを使用すると、読みやすいコードを作り、「=」/「==」トラップを回避します。

幸運を祈る!

+0

ha!私は時々そのスタイルを使用しますが、一貫性がありません.iはそれに固執するつもりです。 – Wandang

関連する問題