作者yhn0tgb60 (呦厚厚)
看板Flash
标题Re: [问题] 读取 贴图失败 要再重新读取的问题???
时间Tue Jul 6 14:00:37 2010
不好意思 隔这麽久才补程式码
这不是我实际使用的程式 不过意思差不多就是了
有的时候会全部读取成功
有时候读取到 第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)
1F:→ pepsitetsu:for回圈每次都会检查条件i有没有小於num 07/06 14:48
2F:→ pepsitetsu:但你每次loadComplete都会将num-- 07/06 14:49
3F:→ pepsitetsu:所以跑了i=50之後刚好num也减到剩50 for条件就不成立 07/06 14:50
4F:→ pepsitetsu:自然跳出回圈 07/06 14:52
5F:→ pepsitetsu:IOErrorEvent当然不被触发 因为程式没跑完根本不关他事 07/06 14:53
6F:→ pepsitetsu:你可以另外var一个index去累加计算loadComplete次数 07/06 14:54
7F:→ pepsitetsu:再去判断index= =num 07/06 14:55
※ 编辑: yhn0tgb60 来自: 124.109.115.30 (07/06 15:14)
8F:→ yhn0tgb60:我改过了 for() 里面的 num直接改成 100 07/06 15:15
9F:→ yhn0tgb60:不过还是会有一样的问题 07/06 15:15
10F:→ yhn0tgb60:而且我印象中~~for回圈 和 Event.COMPLETE事件 不太容易 07/06 15:17
11F:→ yhn0tgb60:遇到会同步执行的问题 通常Event.COMPLETE 至少会慢一拍 07/06 15:17
12F:→ yhn0tgb60:不过当然 p大说的问题 还是有可能 是必须避免的 07/06 15:20
13F:推 pepsitetsu:嗯嗯 有一点我不晓得有没有差 但之前困扰我很久 07/06 15:20
14F:→ yhn0tgb60:之前没注意到 谢谢了 ^^ 07/06 15:20
15F:推 dsmwang:要不要试试看等上一个COMPLETE之後再开始载入下一个? 07/06 15:20
16F:→ pepsitetsu:_ldr先侦听再load会比较好 只是建议 07/06 15:21
17F:→ pepsitetsu:以前我先load再侦听结果还没开始侦听就load完了 07/06 15:22
18F:→ pepsitetsu:最後就没有执行到loadComplete 07/06 15:22
19F:→ pepsitetsu:那时也是CJ大的提醒我才知道 这里只是分享一下 07/06 15:23
20F:→ yhn0tgb60:回 d大 这方法当然可以 只是...效果上会慢一点... 07/06 15:24
21F:→ yhn0tgb60:所以除非真的没办法 才会这样做 07/06 15:25
22F:推 dsmwang:那把loader用阵列让他分别load? 07/06 15:25
23F:→ yhn0tgb60:我知道问题了... 因为 ldr 是区域变数 07/06 16:04
24F:→ yhn0tgb60:所以他在 LoadComplete之前 就已经被系统清除了 07/06 16:05
25F:→ yhn0tgb60:变数ldr已经被系统清掉了所以也没有 LoadComplete这回事 07/06 16:06
26F:→ yhn0tgb60:本来我放区域变数 想说系统会帮我清除 可以节省资源= = 07/06 16:07
27F:推 dsmwang:那怎麽会成功读到50几张阿? 07/06 16:10
28F:→ yhn0tgb60:可能系统清除记忆体需要些时间吧 不会即时清除 07/06 16:11
29F:→ yhn0tgb60:而那些是在被清除之前 就跑完的 07/06 16:12
30F:→ yhn0tgb60:我不确定啦 这需要大师来回答 XD 07/06 16:12
31F:推 dsmwang:..大师们快出来XDD 07/06 16:27
32F:推 cjcat2266:话说同样一份code我可以100个全部载入成功 07/06 16:36
33F:→ yhn0tgb60:ㄟ 要多试几次 有时候会成功 有时候会失败 07/06 16:52
34F:→ yhn0tgb60:不然就把 100改成1000 或是图档找大一点的 这样失败的 07/06 16:58
35F:→ yhn0tgb60:机率会大大提升 07/06 16:58
36F:推 cjcat2266:你的error message是什麽 07/06 17:35
37F:→ cjcat2266:噢,没事,那个不是error,是error event 07/06 17:36
38F:推 cjcat2266:我觉得有可能是记忆体用量过大... 07/06 17:39