看板 Flash 關於我們 聯絡資訊
不好意思 隔這麼久才補程式碼 這不是我實際使用的程式 不過意思差不多就是了 有的時候會全部讀取成功 有時候讀取到 第50多張時 就沒反應了 本來想說 如果是讀取失敗 就再重新讀取一次 但 LoadError 卻都沒有讀取失敗的資訊 想知道怎麼處裡這問題 謝謝了 ^^ public class test extends MovieClip { var num:int=100; // 讀取100次 public function test():void { for( var i:int=0 ; i<100 ; i++ ) // 設定讀取100次 aaa.png 的貼圖 { var _ldr = new Loader(); _ldr.load( new URLRequest( 'aaa.png' ) ); _ldr.contentLoaderInfo.addEventListener( Event.COMPLETE , LoadComplete ); _ldr.contentLoaderInfo.addEventListener( IOErrorEvent.IO_ERROR , LoadError ); _ldr.contentLoaderInfo.addEventListener( SecurityErrorEvent.SECURITY_ERROR , LoadError ); } } private function LoadComplete( evt:Event ):void { num--; trace('OK',num); // 讀取成功顯示OK if( num==0 ) { trace('ALL_OK'); // 全部讀取成功 顯示ALL_OK } } private function LoadError( evt:Event ):void { trace('Error',num); // 讀取失敗顯示 Error } } ※ 引述《yhn0tgb60 (呦厚厚)》之銘言: : 就是阿~~ : 我有一個程式 需要去讀取 外部的許多張貼圖 放到舞台上 : 但有時會發生有1,2張的貼圖 過了很久還是讀不進來 : 我想可能是讀取中間發生什麼問題 : 導致貼圖讀不進來 : 我想說用 IOErrorEvent.IO_ERROR 事件 : 當讀貼圖失敗 就從重新再讀取 : 不過我發現這方法沒用 : 因為貼圖讀不進來 根本不會跳出 IOErrorEvent.IO_ERROR 事件 : 這問題要怎麼解決阿??? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 124.109.115.30 ※ 編輯: yhn0tgb60 來自: 124.109.115.30 (07/06 14:01)
pepsitetsu:for迴圈每次都會檢查條件i有沒有小於num 07/06 14:48
pepsitetsu:但你每次loadComplete都會將num-- 07/06 14:49
pepsitetsu:所以跑了i=50之後剛好num也減到剩50 for條件就不成立 07/06 14:50
pepsitetsu:自然跳出迴圈 07/06 14:52
pepsitetsu:IOErrorEvent當然不被觸發 因為程式沒跑完根本不關他事 07/06 14:53
pepsitetsu:你可以另外var一個index去累加計算loadComplete次數 07/06 14:54
pepsitetsu:再去判斷index= =num 07/06 14:55
※ 編輯: yhn0tgb60 來自: 124.109.115.30 (07/06 15:14)
yhn0tgb60:我改過了 for() 裡面的 num直接改成 100 07/06 15:15
yhn0tgb60:不過還是會有一樣的問題 07/06 15:15
yhn0tgb60:而且我印象中~~for迴圈 和 Event.COMPLETE事件 不太容易 07/06 15:17
yhn0tgb60:遇到會同步執行的問題 通常Event.COMPLETE 至少會慢一拍 07/06 15:17
yhn0tgb60:不過當然 p大說的問題 還是有可能 是必須避免的 07/06 15:20
pepsitetsu:嗯嗯 有一點我不曉得有沒有差 但之前困擾我很久 07/06 15:20
yhn0tgb60:之前沒注意到 謝謝了 ^^ 07/06 15:20
dsmwang:要不要試試看等上一個COMPLETE之後再開始載入下一個? 07/06 15:20
pepsitetsu:_ldr先偵聽再load會比較好 只是建議 07/06 15:21
pepsitetsu:以前我先load再偵聽結果還沒開始偵聽就load完了 07/06 15:22
pepsitetsu:最後就沒有執行到loadComplete 07/06 15:22
pepsitetsu:那時也是CJ大的提醒我才知道 這裡只是分享一下 07/06 15:23
yhn0tgb60:回 d大 這方法當然可以 只是...效果上會慢一點... 07/06 15:24
yhn0tgb60:所以除非真的沒辦法 才會這樣做 07/06 15:25
dsmwang:那把loader用陣列讓他分別load? 07/06 15:25
yhn0tgb60:我知道問題了... 因為 ldr 是區域變數 07/06 16:04
yhn0tgb60:所以他在 LoadComplete之前 就已經被系統清除了 07/06 16:05
yhn0tgb60:變數ldr已經被系統清掉了所以也沒有 LoadComplete這回事 07/06 16:06
yhn0tgb60:本來我放區域變數 想說系統會幫我清除 可以節省資源= = 07/06 16:07
dsmwang:那怎麼會成功讀到50幾張阿? 07/06 16:10
yhn0tgb60:可能系統清除記憶體需要些時間吧 不會即時清除 07/06 16:11
yhn0tgb60:而那些是在被清除之前 就跑完的 07/06 16:12
yhn0tgb60:我不確定啦 這需要大師來回答 XD 07/06 16:12
dsmwang:..大師們快出來XDD 07/06 16:27
cjcat2266:話說同樣一份code我可以100個全部載入成功 07/06 16:36
yhn0tgb60:ㄟ 要多試幾次 有時候會成功 有時候會失敗 07/06 16:52
yhn0tgb60:不然就把 100改成1000 或是圖檔找大一點的 這樣失敗的 07/06 16:58
yhn0tgb60:機率會大大提升 07/06 16:58
cjcat2266:你的error message是什麼 07/06 17:35
cjcat2266:噢,沒事,那個不是error,是error event 07/06 17:36
cjcat2266:我覺得有可能是記憶體用量過大... 07/06 17:39