从C# – 有没有办法确定swf是AVM1还是AVM2?
发布时间:2020-12-16 01:39:14 所属栏目:百科 来源:网络整理
导读:ActionScript 3.0提供了一种方法来确定swf是否适用于:1)AVM2(或更早);或2)AVM3. [ link1,link2] 我的问题: 从C#,有没有办法确定swf是用于AVM1还是AVM2? 解决方法 当然. .swf规范可以在这里找到: http://www.adobe.com/content/dam/Adobe/en/devnet/swf/p
> ActionScript 3.0提供了一种方法来确定swf是否适用于:1)AVM2(或更早);或2)AVM3. [
link1,link2]
我的问题: >从C#,有没有办法确定swf是用于AVM1还是AVM2? 解决方法
当然. .swf规范可以在这里找到:
http://www.adobe.com/content/dam/Adobe/en/devnet/swf/pdf/swf_file_format_spec_v10.pdf FileAttributes,第60页,ActionScript3 UB [1].如果设置此位则为AVM2,否则为AVM1.这仅适用于版本9及更高版本的.swfs,但版本8或更低版本保证为AVM1. 快速找到这一点: // Bytes from start of file: Signature + Version + FileLength + FrameSize + FrameRate + FrameCount + FileAttributes Header 3 + 1 + 4 + (ceil(((swf[8] >> 3) * 4 - 3) / 8) + 1) + 2 + 2 + 2 swf [8]是swf的第8个字节.读取下一个字节,它是第5位. 如果文件被压缩(字节0 == 0x43),您可能必须在FileLength之后解压缩所有内容.使用zlib压缩swf并使用Little Endian. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |