1
6
当然。.swf规范可在以下位置找到: http://www.adobe.com/content/dam/Adobe/en/devnet/swf/pdf/swf_file_format_spec_v10.pdf 文件属性,第60页,ActionScript3 UB[1]。如果设置了这个位,那么它是AVM2,否则它是AVM1。这只适用于9版及以上版本的.swfs,但8版或以下版本保证为AVM1。 快速到达那个位置的方法是:
swf[8]是swf的第8个字节。读下一个字节,它是第5位。 如果文件是压缩的(字节0==0x43),则可能必须解压缩文件长度之后的所有内容。swf是使用zlib压缩的,是小Endian。 |
2
1
这个
ActionScript虚拟机2
是ActionScript3的虚拟机。
平均值1
是ActionScript1和2的虚拟机。所以如果ActionScript版本是
关于你的最新问题:我不认为用C#直接读出这些信息是可能的。我想你应该在C里面放一部SWF电影,这样你就可以嵌入Flash播放器,让它播放电影。所以你不能直接和C#的电影互动。可能可以联系Flash Player实例并获取信息,但我不知道有什么样的信息可用(我认为这还取决于您如何嵌入它)。 不过,您可以使用Flash的external interface作为通信点(我猜,您可以使用C#容器作为Flash的外部接口,就像您可以在网页上与JavaScript通信一样),然后简单地询问电影本身是什么版本。由于您可能正在使用一些第三方文件,因此您无法访问它们的源文件,因此您可以编写一个包装器SWF,而不是为您加载原始文件。 不管你怎么做,我想知道你为什么想要这些信息。当你在某处播放一部SWF电影时,你根本不在乎它的内在功能。AVM版本仅在与电影直接通信时才重要。 |
Robert King · Unity C#语法问题-转换位置 1 年前 |
JBryanB · 如何从基本抽象类访问类属性 1 年前 |
law · 检查答案按钮的输入字符串格式不正确 2 年前 |
i_sniff_ket · 在unity之外使用unity类 2 年前 |