我正在将一个大型应用程序从AS2转换为AS3。该功能的一部分是加载嵌入到SWF中的资产,这些资产是旧的。不可能将它们转换成AS3 (它们实际上没有代码,它们只是由输出兼容flash 6的SWF的工具生成的)。
问题是,如何在AVM2应用程序中使用此AVM1 (ActionScript VirtalMachine 1)图形内容?
下面是我在AS2中经常做的事情:
mcLoader = new MovieClipLoader();
mcLoader.addListener(this);
holder = createEmptyMovieClip('holder', 10);
mcLoader.loadClip("http://.../library.swf", holder);
function onLoadInit() {
holder.attachMovie('GFXsymbolInsideLibraryswf', 'mysymbol', 123);
}我如何在AS3中做同样的事情,加载AS2库swf?我是否需要另外一层通过LocalConnection进行通信的“包装器”SWF?请告诉我还有更简单的方法。我可以翻转Library.swf上的位来强制它作为AVM2 SWF加载吗?既然里面没有代码,也许这样就行了?
发布于 2009-08-26 19:07:28
这看起来可以做我想要的,如果我弄清楚了,以后如果没有其他人回复,我会更新这个答案。
编辑: Nevermind。这对我想做的事情不起作用。我最终不得不使用一个中间包装器SWF。我现在假设我想要的东西是不可能做到的。如果其他人有任何建议,请留下答案,我会考虑的。
发布于 2009-08-26 07:22:41
最好是将遗留的swf加载到AS3中的AVM1Movie对象中。
发布于 2009-08-27 01:25:11
“翻转”咬合是相当容易的。我不知道它是否有效,但你可以试一试。因为你没有代码,你可能真的有机会...
无论如何,使用十六进制编辑器打开您的swf。版本号是第四个字节。对于为FP 6导出的swf,您将看到类似以下内容:
43 57 53 06
这是签名加上版本号。前3个字节是ascii字符串"CWS",这意味着swf是压缩的。
46 57 53 06这是未压缩的swf "FWS“的签名。
尝试将06更改为09,看看是否有效...
https://stackoverflow.com/questions/1331978
复制相似问题