我有一个加载一系列AS2电影的包装SWF。每个AS2电影都会加载一系列.png文件。将外部PNG加载到加载到AS3 swf包装中的AS2 swf中
AS3_wrapper.swf
|-> AS2_1.swf
|-> image_1.png
|-> image_2.png
|-> AS2_2.swf
|-> image_1.png
|-> image_2.png
里面我听使用onLoadInit
的png格式的加载和更新我的UI的AS2的。
这适用于第一个AS2 SWF。但是当我加载第二个AS2 swf时,onLoadInit
没有为pngs触发。我的猜测是,图像在缓存或类似的东西。我在请求的末尾放置了一个随机字符串,以避免缓存,但似乎不起作用。
在AS2代码看起来大致是这样的:
var flagLoader:MovieClipLoader = new MovieClipLoader();
var listener:Object = new Object();
listener.onLoadInit = Delegate.create(this, handleImageLoad);
flagLoader.addListener(listener);
var row:MovieClip = frame1["row" + (numLoaded + 1)];
flagLoader.loadClip(predictionData[numLoaded].flag + "?r="+Math.random(), row.flag);
我要确保在同一时间只加载一个图像(我读过传闻一次装入一个物多能混淆了MovieClipLoader
)。对于第一个as2文件,一切都很好。当我加载第二个as2文件时,handleImageLoad
永远不会被调用。
更新:更令人费解的是,如果我重装第一AS2电影(之后的第二AS2电影无法加载图像)第一AS2电影加载图像再次罚款。
更新2:在尝试从使用MovieClipLoader进行轮询(如有帮助地建议的)之后,我发现了一些相关的证据。
当我加载第一个AS2文件并从顶级剪辑中追踪时,它会打印出_root
。加载时的第二个AS2文件跟踪相同_root
。这导致我检查他们是否在名称上发生冲突,而且他们是。两人都有一个叫做frame
的孩子。第一个,我发现它跟预期的一样_root.frame
。第二个AS2文件跟踪_level0.instance3.instance118.instance111.frame
。我猜这与问题有关。
Flash保持两个文件的_root相同,但它正在更改他们的子项的位置(对于随后加载的具有相同名称子项的文件)。因此,onLoad会出现错误的剪辑或关于它加载的事件。
我会试一试,如果有效,请回到这里。这真的很糟糕,如果这是真的,但我感谢有一个可能的解决方法。 – 2010-05-26 18:50:54
恐怕你的解决方案不适合我。但它确实帮助我追踪了更多信息。也许你可以再看看我的描述并提供更多信息。 – 2010-05-26 19:24:04