Flash 将外部PNG加载到AS2 swf中并加载到AS3 swf包装中
我有一个包装器SWF,可以加载一系列AS2电影。每个AS2电影都会加载一系列.png文件Flash 将外部PNG加载到AS2 swf中并加载到AS3 swf包装中,flash,actionscript-3,actionscript,actionscript-2,Flash,Actionscript 3,Actionscript,Actionscript 2,我有一个包装器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。
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文件和跟踪时,它会打印出\u root
。加载时的第二个AS2文件跟踪相同的\u root
。这让我检查他们是否在名字上有冲突,而且他们是。两者都有一个名为frame
的子项。第一个,当我跟踪它时,它显示为\u root.frame
,正如预期的那样。第二个AS2文件跟踪\u level0.instance3.instance118.instance111.frame
。我猜这与问题有关
Flash保持两个文件的_根相同,但更改其子文件的位置(对于随后加载的具有同名子文件的文件)。因此,要么onLoad指向错误的剪辑,要么它加载的事件是错误的。在AS3下运行AS2似乎会带来一些延迟问题。。。。您需要轮询已加载的swf几次,然后它才能识别已加载 我也有类似的情况。。。AS3外壳加载一个大型而复杂的AS2应用程序,该应用程序具有许多外部SWF、依赖项等。我必须做的是在loadClip调用后运行一个间隔,以比较加载的字节数与总字节数。。。然后,当它们彼此相等(但超过4)时,我可以安全地启动onLoadInit函数,否则永远不会启动 因此,您将丢失MovieClipLoader在AS2中提供给您的所有初始化、进度和错误事件。。您将返回FP5和FP6天,但它似乎工作可靠。我很想听听其他人的经历,如果有更好的办法的话。詹姆斯 你说得对,我还注意到,在你描述的跟踪堆栈中读取的_rootvs _level0.instance3.instance118,它必须与AVM1内容以及AVM2电影如何处理有关 轮询并不总是有效的,但是您可以使用它来查看在启动loadClip()方法后发生了什么。您是否认为您的字节加载为未定义?或者可能swf已加载,但无法访问其属性,例如swf主时间线上声明的变量。我深入研究了这个问题,发现基本上你有两到三种方法来解决这些问题。轮询AS2容器是查看失败原因的第一步 你能用loadMovie而不是MovieClipLoader来加载你的.png吗 您是否尝试过在FP10.1下运行您的示例?奇怪的是,很多问题都消失了 根据AS2应用程序的复杂性,这可能是一个很难解决的问题 您签出了以下内容: 谢谢,
杰夫每隔3-4年我会遇到一个问题,我认为这个问题最终会让我崩溃 当我试图弄明白为什么即使我成功地将我的AVM1电影加载到AVM2电影文件中,AVM1文件也没有按预期运行时,我遇到了这篇文章 在解决了无法在AS2-AS3文件之间进行通信这一最初的重大问题之后,我简直不敢相信AVM1电影在开始播放后似乎总是很快停止播放 对我来说,MovieClipLoader loadClip()方法没有触发任何进度或已完成事件,这导致我的文件完全停止播放,正如你们两位所建议的那样 您建议在loadClip调用之后运行一个间隔来比较加载的字节数和总字节数,这对我来说很有效
谢谢谢谢谢谢谢谢谢谢!:D我会尝试一下,如果它有效,我会在这里报告。如果这是真的,那真的很糟糕,但我很感激有一个可能的解决办法。我担心你的解决方案对我不起作用。但它确实帮助我找到了更多的信息。也许你可以再看看我的描述,提供更多的信息。谢谢杰夫的评论。我尝试了loadMovie而不是MovieClipLoader,结果是一样的。如果我轮询bytesLoaded属性,它将返回4或一些奇怪的结果。我一直在使用最新的10.1播放器。我在网上找到了关于这个问题的其他报告(一两篇),但没有人有一个解决方法可以为我工作(大多数涉及以某种方式修改as2 swf,这对我来说是不可能的)。