登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

游戏记忆...

竹石 Blog

 
 
 

日志

 
 

flash sdk开源相关的一些东西  

2010-04-30 09:33:45|  分类: as/flash |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

 

am2框架图

2010年4月30日 - 竹石 - 游戏记忆...

 

abc文件

avm2_overview.pdf

http://www.adobe.com/content/dam/Adobe/en/devnet/actionscript/articles/avm2overview.pdf

abc文件就是flash player可以直接解释执行的的字节码,该文件中的内容会直接嵌入到swf文件的doABC标签下。源码的asc包就是处理abc格式的。通常在编译AS项目时,as3脚本文件都会被编译成abc文件然后再生成doABC标签。

手工编译as3到abc文件

 在flash sdk的lib目录下,有个asc.jar,该文件就是用来生成abc文件的java程序,机器上要安装java运行时。

  • 新建一个文件Hello.as,并写上一行代码     print("Hello");
  • 在控制台中输入cd C:\Program Files\Adobe\Adobe Flash Builder 4\sdks\4.0.0\lib
  • 在控制台中输入java -jar asc.jar Hello.as,
    编译成功,输出Hello.abc, 79 bytes written

察看Hello.as文件所在目录会发现新生成一个Hello.abc文件。

继续上面,把Hello.as文件改为一个class看看;

  • 把的代码改成
    package {
     import flash.display.Sprite;
          
    public class Hello extends Sprite {
              
      public function Hello() {
                     trace("Hello");
                }
          }
    }
  • 编译,出现[Compiler] Error #1017: The definition of base class Sprite was not found.提示,这是由于缺少Sprite类的定义
  • 导入as基本库:在asc源码包下有个abc文件,里面有builtin.abc,playerglobal.abc,toplevel.abc三个文件,他们就是flash的基本库。asc的命令行参数可以直接用java -jar asc.jar来查看。
    重新输入命令
    java -jar asc.jar -import E:\work\sdksrc\modules\asc\abc\builtin.abc -import E:\work\sdksrc\modules\asc\abc\playerglobal.abc Hello.as
    可以看到编译成功。

ABC文件的格式

abcFile 
{
 u16 minor_version
 u16 major_version
 cpool_info constant_pool
 u30 method_count
 method_info method[method_count]
 u30 metadata_count
 metadata_info metadata[metadata_count]
 u30 class_count
 instance_info instance[class_count]
 class_info class[class_count]
 u30 script_count
 script_info script[script_count]
 u30 method_body_count
 method_body_info method_body[method_body_count]
}

 

常量池

cpool_info
{
 u30 int_count
 s32 integer[int_count]
 u30 uint_count
 u32 uinteger[uint_count]
 u30 double_count
 d64 double[double_count]
 u30 string_count
 string_info string[string_count]
 u30 namespace_count
 namespace_info namespace[namespace_count]
 u30 ns_set_count
 ns_set_info ns_set[ns_set_count]
 u30 multiname_count
 multiname_info multiname[multiname_count] 
}

  评论这张
 
阅读(1550)| 评论(0)

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018