作者cjcat2266 (CJ Cat)
看板Flash
标题Re: [问题] 读取 贴图失败 要再重新读取的问题???
时间Tue Jul 6 17:51:41 2010
1F:→ yhn0tgb60:我知道问题了... 因为 ldr 是区域变数 07/06 16:04
2F:→ yhn0tgb60:所以他在 LoadComplete之前 就已经被系统清除了 07/06 16:05
3F:→ yhn0tgb60:变数ldr已经被系统清掉了所以也没有 LoadComplete这回事 07/06 16:06
4F:→ yhn0tgb60:本来我放区域变数 想说系统会帮我清除 可以节省资源= = 07/06 16:07
5F:→ yhn0tgb60:可能系统清除记忆体需要些时间吧 不会即时清除 07/06 16:11
6F:推 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)
7F:推 dsmwang:原来是这样! 07/06 17:56
8F:推 yhn0tgb60:谢谢了 ^^ 07/06 19:23
9F:推 jimi7788:学习! 07/07 09:57