我正在将一个大型应用程序从AS2转换为AS3。部分功能是它加载嵌入在SWF中的资产,这是旧事物。将它们转换为AS3是不可能的(它们中确实没有代码,只是它们是由输出闪存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加载吗?由于里面没有代码,可能会有用吗?
答案 0 :(得分:0)
最好将旧版swf加载到AS3中的AVM1Movie对象中。
答案 1 :(得分:0)
看起来它可能会按我的意愿行事,如果我弄明白并且没有其他人回复,我会在稍后更新此答案。
编辑:没关系。这不适用于我想做的事情。我最终不得不使用中间包装SWF。我现在要假设我想要的是不可能做到的。如果其他人有任何建议,请留下答案,我会考虑。
答案 2 :(得分:0)
“翻转”叮咬非常容易。我不知道它是否会起作用,但你可以尝试一下。既然你没有代码,你实际上可能有机会......
无论如何,用十六进制编辑器打开你的swf。版本号是第四个字节。对于为FP 6导出的swf,你会看到类似的东西:
43 57 53 06
这是签名加上版本号。前3个字节是ascii字符串“CWS”,这意味着swf被压缩。
46 57 53 06 这是未压缩的swf“FWS”的签名。
尝试将06更改为09,看看它是否有效......