→ yhn0tgb60:我知道問題了... 因為 ldr 是區域變數 07/06 16:04
→ yhn0tgb60:所以他在 LoadComplete之前 就已經被系統清除了 07/06 16:05
→ yhn0tgb60:變數ldr已經被系統清掉了所以也沒有 LoadComplete這回事 07/06 16:06
→ yhn0tgb60:本來我放區域變數 想說系統會幫我清除 可以節省資源= = 07/06 16:07
→ yhn0tgb60:可能系統清除記憶體需要些時間吧 不會即時清除 07/06 16:11
推 cjcat2266:我覺得有可能是記憶體用量過大... 07/06 17:39
嗯,看來我們兩個都各說對一半
因為圖片佔記憶體空間不少,所以很容易觸發garbage collection
當test()執行完的時候所有的Loader物件都成為orphan
自然會被garbage collector解決掉,就算是還沒有載入完成者也一樣
解決方法之一
就是用一個array把這些Loader物件的reference保留住
在此我另外用一個Dictionary保留Loader物件在array的index
var indices:Dictionary = new Dictionary();
var array:Array = new Array(COUNT);
public function test():void {
for (var i:int=0; i < COUNT; i++) {
var _ldr:Loader = new Loader();
indices[_ldr] = i;
array[i] = _ldr;
//下略
然後在LoadComplete裡才把reference釋放掉
private function LoadComplete(evt:Event):void {
array[indices[evt.currentTarget]] = null;
//下略
這樣就不會有載入未完成就被garbage collector清掉的問題了
--
CJ Cat = Croa'J Cat = Cockroach Cat = 西街凱特 = 蜚蠊貓 = 蟑螂貓
Blog http://cjcat.blogspot.com
Gallery http://cjcat2266.deviantart.com
ptt2 Board CJWorkshop - 阿多比閃光(Adobe Flash)研討區
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.45.160.182
※ 編輯: cjcat2266 來自: 114.45.160.182 (07/06 17:52)
推 dsmwang:原來是這樣! 07/06 17:56
推 yhn0tgb60:謝謝了 ^^ 07/06 19:23
推 jimi7788:學習! 07/07 09:57