- removeChild? or visible=false?

removeChildとvisibile=falseが、
他に与える実行速度の影響をテストする小さなサンプル結果で、
それほど差がないとの記事を読んだ事がある。

じゃぁ、コンストラクタで、
必要になるすべてのDisplayObjectをaddChildし、
visible=falseで消してしまえとなんて安易に考えたりしてしまう。

ガーベージコレクションの対象にさせたい場合は、
当然、removeChildしか考えないから問題ない。

単純な例として、
10000個のDisplayObjectインスタンスを常に保持していて、
10個のみのDisplayObjectを画面上に表示し、
containsプロパティを調べ、
各深度を更新するようなプログラムの場合についてはどうか?

for(var i=0 ; i<target.contains.length;i++){
 setChildIndex(target.contains[i] , something);
}

この場合、visible=falseは、良くない。
removeChildしておいた方が、当然軽い。

DisplayObjectのvisibleプロパティは、
ただ単にそれ自身のプロパティを変更するだけに対し、
DisplayObejctContainerのremoveChildメソッドは、
そのDisplayObjectContainerが保持するプロパティも、
変更するという点を、意識して使い分ける必要があり、
これが、プロバティとメソッドの違いの特徴とも言える。

Trackback : 0 : removeChild? or visible=false?

http://www.onmyownlife.com/mt/mt-tb.cgi/43

Comment