注册 登录  
 加关注

网易博客网站关停、迁移的公告:

将从2018年11月30日00:00起正式停止网易博客运营
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

为着理想勇敢前进

 
 
 

日志

 
 

haXe 学习笔记  

2009-08-30 21:13:40|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

其实我早就听说过haXe。那是大概两年前,mtasc停止开发,转而开发haXe. 当时我没怎么注意,直到现在对mxmlc的编译速度忍无可忍的时候,才偶然发现改用haXe也许是个解决办法。

haXe主页上强调这是一种“multiplatform language”的语言,可以编译成JavaScript、Flash、NeckoVM(这个没听说过)、PHP、C++。不过这些我不关心,我只关心它能编译成Flash.

从haXe的语言特性来看,这是一种大路货的面向对象语言,跟Java、C#、ActionScript3都差不多。对我而言,haXe比ActionScript3好的地方有:

  1. haXe编译速度奇快,比mxmlc快得多,这应该是选用它的最大动机。
  2. 更完备的静态类型系统。比如支持泛型,此外,其函数类型也是强类型。这解决了ActionScript3语言陷阱和缺陷一文提到的第三个缺陷
  3. 支持类型推断,不用每个变量都写类型。
  4. 局部变量的范围是某个区块而不是整个函数。这解决了ActionScript3语言陷阱和缺陷一文提到的第四个缺陷
  5. 支持枚举

haXe比ActionScript3差的地方有:

  1. 不支持自由函数,因而函数必须放在类中。flash.utils.setTimeout等自由函数也就不能直接调用了。
  2. 没有const关键字。

从ActionScript3迁移到haXe时还需要考虑的事情包括:

  1. 调试。根据我测试,在haXe 2.x中只需要加上 -debug -D fdb 参数就可以使用Flex SDK中的fdb来调试了。
  2. 动态加载。这个说来话长,得另写一篇文章来说这个问题了。简单的说一下要点吧。要使用 haxe --gen-hx-classes 来生成头文件以便在编译时找到符号,然后在运行时加载动态库。运行时加载要指定传一个ApplicationDomain.currentDomain进去。
  3. 如果想要和现有的swf编译到一起,需要用-swf-lib把已有的swf捆进来。此外,调用其中已有的AS代码则还需要--gen-hx-classes生成的头文件。AS要调用haXe代码的话,则需要haxe -swf9 xxx.swc来生成一个swc文件让AS能通过这个文件找到符号
  4. 要编译一般在网上用的swf,需要加入-D network-sandbox参数。
  5. haXe的学习成本。对我而言,学习成本很低,花费一天时间足够搞懂。再次强调,这是一种大路货语言。语法和ActionScript区别不大,就算有些犄角旮旯之处不同,遇到时也很容易解决。比较讨厌的一个语法在于每行代码都必须加上分号。
  评论这张
 
阅读(1033)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

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

页脚

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