カテゴリー
Develop

外部swfの削除はLoader.unloadは使わない方が良いんじゃないかという件に誤りがあった件

ここ数日やってきましたが、
apeirophobia: Loader.removeChildapeirophobia: 外部swfの削除はLoader.unloadは使わない方が良いんじゃないかという件
Loader.unloadの処理にミスがありました・・・。(ずかしい・・・)
apeirophobia: Loader.removeChildの方でテストしていた

となっている部分。これunloadでlodar.contentsが非表示になるのでうっかりしていたのですが、loader自体がremoveChildされていませんでした・・・orz。
ということで

としてもう一度検証してみました。
以下その結果。


080406_e1.jpg
最初:6275kb
080406_e2.jpg
2500回目:7172kb。
080406_e3.jpg
5000回目:10572kb。
080406_e4.jpg
7500回目:8217kb。
080406_e5.jpg
10000回目了:9900kb。
うん。なくできました・・・。すんません。
一応検証に用いたソース

的に外部swfを一度removeChildして、再利用という使い方をしないのででさほどEvent.REMOVED_FROM_STAGEでも問題はないのだけど、もしremoveChildして再度addChildして利用する場合はEvent.REMOVED_FROM_STAGEだと駄目。Event.REMOVEDだとその辺うまく切り分けられるのかしらね??そこはまだ検証してないけど・・・。
もし再利用するのであればEvent.UNLOADで処理。で、そのネストしているたちに何かしら明示的なメソッドで自分を掃除させる感じかなあ?ちょっとそれは面倒だなあ・・・。Event.UNLOADってその子供にも継承されないのかしら?

「外部swfの削除はLoader.unloadは使わない方が良いんじゃないかという件に誤りがあった件」への3件の返信

ちょっと気になることが一つ。
Event.REMOVED_FROM_STAGE
をListenして自分の掃除をさせる場合
parent.removeChild(this);
をするとGCが発動しないような気がする。
子供に対して
removeChildもchild = null;
も適応しない方がきれいにメモリがクリアされるような傾向が見られるのだけど、なんつーかタイミング的にGCが作動してないだけなのか?の判断が付かないので確証が持てない・・・。
でも検証の傾向としてはそんな感じがするであります。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です