1

ナビゲーション ツリーからさまざまなムービークリップをロードできるムービークリップ ブラウザを作成しました。インターバルのあるムービー (setInterval()) は、ムービークリップをアンロードしたり削除したりしても続行されることに気付きました。

ロードされたムービークリップを制御できないという事実を考えると、インターバルを含むムービークリップを完全に削除するにはどうすればよいですか??

回避策として、すべての実行間隔を排除しようとするこの関数を作成しましたが、それは行うべき方法ではありません (またはそうですか?)。よく効きそうだけど…

var LastCleared=-1;
ClearAllIntervals = function(){
//You MUST clear the intervals or they will not be deleted. Every setInterval returns a higher number.
    Highest = setInterval(function(){},100); //Get highest intervalnumber
    i=Highest;
    while(i>LastCleared){
        trace("***************clearing interval:"+i);
        clearInterval(i--);
    }
    LastCleared=Highest;
}
4

1 に答える 1

0

LastCleared/Highest は、決してクリアしないため、常に発生します。

また、ClearAllIntervals() 関数のスコープは何ですか? LastCleared の以前の値を記憶していない新しいインスタンスが作成される可能性はありますか?

setInterval が連番を返すことを文書化したものを見つけることができなかったことに注意してください。ただし、setInterval は誰にも「属していない」ため、オーバーライドしてそれらの間隔 ID を取得することはできません。

最後に、プレーヤーの新しいバージョンの AS3 には、ロードされたムービーをメモリから解放する機能があり、ロードされた MC がロード中の MC に自分自身をアタッチするのを防ぐサンド ボックスが確かにあると思います。

于 2013-02-12T04:28:35.120 に答える