- 2009-05-18 (月) 14:48
- Progression
ここ最近、はまった事とかを忘れないようにメモシリーズ第二弾。
何かと噂のFlashのステキフレームフレームワーク「Progression」ですが、
何度か使って便利さを実感しつつも、
幾つかどうしようもない状況を引き起こしているので、
忘れないようにメモ。
Progressionを使用し、外部SWFをload、unloadする際、
読み込んだ各コンテンツシーン(外部SWF)がunloadされず、
メモリに残り続けるという現象。
今回は外部SWFがメガコンテンツだっただけに、あっと言う間にカックカク。
いろいろ試してみるも効果なし。
開発者のniumさんも言っているように、現状メモリ関連は対応していないらしい…。
・LoadChildした外部swfを完全にUnloadするには
・CastSprite内でCastImageLoaderを使用するとメモリが解放されない?
一つ目のスレッドの最後にもあるように、
個人的にいろいろ試した結果、原因は、外部SWFにドキュメントクラスやその他のクラス全てにおいて、Progressionの標準クラス(Castとか)を使用すると、unloadされない。
ということ。
テストはFlash標準のデバッグモード+SWFProfilerで確認。
外部SWFとして、以下2つのファイルを用意。
A.swf→ドキュメントクラスにCastMovieClipでクラスを設定。基本項目以外は設定なし。
B.swf→ドキュメントクラスにMovieClipでクラスを設定。基本項目以外は設定なし。
※ファイルを重くするため、テキストを大量にアウトライン化して配置。
indexSceneからそれぞれ読み込むテストを行うと、
A.swfはunload、メモリ解放が全くされない。
B.swfは問題なくunload、メモリも解放された。
試しに、B.swf内にCastSpriteで丸だけのクリップを作成し配置した。
結果、B.swfはunloadされず、メモリも解放されなくなった。
なお、indexSceneを参照する事は可能だった。
あまり検索してもこの手の話はヒットしなかったのですが、
う~ん、これはオレだけなのか・・・?
さらに、困った現象は、
B.swf(CastSpriteなどは削除した初期ファイル)でTweenerを使用する際、
CurveModifiersとDisplayShortcutsの初期化(init())すると、
unloadされず、メモリも解放されなくなる・・・というもの。
まだ勉強不足な所が多々あるので、
きっと何かを間違えているに違いとは思いますが、
なかなか奥が深いProgreesionだなっと。
- Newer: 開国博Y150に行ったという話
- Older: 全Flashサイトでスクロールバーを出す「swfforcesize」についてのメモ
Comments:0
Trackbacks:1
- Trackback URL for this entry
- http://astronika.com/blog/2009/05/18-144827.php/trackback
- Listed below are links to weblogs that reference
- Progression、メモリリークについての個人的メモ from Astronika blog
- pingback from Progressionでガベージコレクションされないのをどうにかしようとした記録 | 2BLOG 09-08-07 (金) 22:13
-
[...] 参考 CastSprite内でCastImageLoaderを使用するとメモリが解放されない? LoadChildした外部swfを完全にUnloadするには(そういえば質問していたなぁ。) Astronika blog – Progression、メモリリークについての個人的メモ [...]