将符号从AS2 SWF加载到AS3应用程序中?

时间:2009-08-26 01:54:23

标签: flash actionscript-3 actionscript actionscript-2

我正在将一个大型应用程序从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加载吗?由于里面没有代码,可能会有用吗?

3 个答案:

答案 0 :(得分:0)

看起来它可能会按我的意愿行事,如果我弄明白并且没有其他人回复,我会在稍后更新此答案。

编辑:没关系。这不适用于我想做的事情。我最终不得不使用中间包装SWF。我现在要假设我想要的是不可能做到的。如果其他人有任何建议,请留下答案,我会考虑。

答案 1 :(得分:0)

“翻转”叮咬非常容易。我不知道它是否会起作用,但你可以尝试一下。既然你没有代码,你实际上可能有机会......

无论如何,用十六进制编辑器打开你的swf。版本号是第四个字节。对于为FP 6导出的swf,你会看到类似的东西:

43 57 53 06
这是签名加上版本号。前3个字节是ascii字符串“CWS”,这意味着swf被压缩。

46 57 53 06 这是未压缩的swf“FWS”的签名。

尝试将06更改为09,看看它是否有效......

答案 2 :(得分:0)

最好将旧版swf加载到AS3中的AVM1Movie对象中。