我有一个Wrapper SWF,可以加载一系列AS2电影。每部AS2电影都会加载一系列.png文件。
AS3_wrapper.swf
|-> AS2_1.swf
|-> image_1.png
|-> image_2.png
|-> AS2_2.swf
|-> image_1.png
|-> image_2.png
在AS2内部,我使用onLoadInit
监听png的加载并更新我的UI。
这适用于第一个AS2 swf。但是当我加载第二个AS2 swf时,没有为png触发onLoadInit
。我的猜测是图像在缓存中或类似的东西。我在请求的末尾放了一个随机字符串,试图避免缓存,但这似乎不起作用。
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是错误的剪辑还是有关它的事件都是。
答案 0 :(得分:1)
每隔3 - 4年我会遇到一个问题,我认为最终会让我感到困扰......
我试图弄清楚为什么即使我成功地将AVM1电影加载到AVM2电影文件中,但是AVM1文件没有按预期运行,我发现了这篇文章。
解决了AS2-AS3文件之间无法通信的最初巨大问题,当AVM1电影在开始播放后不久似乎总是暂停时,我无法相信。
对我来说,MovieClipLoader loadClip()方法没有触发任何进度或已完成的事件,这导致我的文件完全停止播放,正如你们所建议的那样。
你建议在loadClip调用之后运行一个间隔来比较加载到字节总数的字节总数对我来说。
谢谢谢谢谢谢谢谢谢谢谢谢! :d答案 1 :(得分:0)
在AS3下运行AS2似乎会引入一些延迟问题....您需要在识别加载的swf之前轮询已加载的swf几次。
我处于类似情况...... AS3 Shell加载了一个庞大而复杂的AS2应用程序,其中包含许多外部swf,依赖关系等。我必须做的是在loadClip调用后运行一个间隔来比较加载的字节到字节总数...然后当它们彼此相等(但超过4)时,我可以安全地触发onLoadInit函数,否则它将永远不会触发。
因此,您丢失了MovieClipLoader在AS2中为您提供的所有init,进度和错误事件。您将回到FP5和FP6天,但它确实可以正常工作。很想知道其他人的经历,以及是否有更好的解决方法。
答案 2 :(得分:0)
詹姆斯
你是对的,我也注意到_root vs _level0.instance3.instance118在你描述的跟踪堆栈中读出,它必须与AVM1内容以及AVM2电影如何处理它有关。
轮询不会始终工作,但您可以使用它来查看触发 loadClip()方法后发生的情况。您是否将 bytesLoaded 视为 undefined ?或者可能是swf已加载但您无法访问它的属性,例如在swf的主时间轴上声明的变量。我已经深入研究了这个问题,发现基本上你有两到三种解决这些问题的方法。轮询AS2容器是查看失败的第一步....
你可以使用 loadMovie 代替 MovieClipLoader 来加载你的.png吗?
您是否尝试在FP10.1下运行示例?奇怪的是,很多这些问题都消失了!
根据AS2应用程序的复杂程度,这可能是一个难以解决的问题。
你检查了这个: http://fladdict.net/blog-en/2007/06/avm2loader-class.html
感谢, 杰夫