Actionscript 3 vs Haxe:为新的 Flash 项目选择哪个?
Posted
技术标签:
【中文标题】Actionscript 3 vs Haxe:为新的 Flash 项目选择哪个?【英文标题】:Actionscript 3 vs Haxe: Which to chose for new Flash project? 【发布时间】:2010-11-05 21:33:01 【问题描述】:我正在规划一个新的 Flash 游戏项目,想知道哪种语言更适合使用?我已经对 Actionscript 3 有深入的了解,还没有使用过 Haxe,但我已经阅读了语言参考文档,并且似乎 Haxe 具有我最喜欢的其他语言 C# 和 Ruby 的一些功能。
所以我的问题有两个部分:
1) Haxe 可以与闪存组件(swc 文件)互操作吗?例如,如果我使用 Flash IDE 为某些控件设置皮肤,我可以导入这些控件并在 Haxe 中使用它们吗?
2) Haxe 编译器有什么性能优势吗?还是有什么陷阱?
【问题讨论】:
我很想知道这是怎么回事。我已经被 haXe 诱惑了好几次了。甚至还有 haXe/Neko 书。现在它可以编译为 php 和 C++(以及 Neko、ActionScript 和 javascript),我可能很快就会找到一个尝试的借口。 您还应该查看 FPOD:code.google.com/p/fpod ... 它提供了一些不错的额外功能 ... 并加入邮件列表 ... 有大量有用的信息/新闻以及那里的一切 .. . 和帮助,当然... :D 【参考方案1】:1) 您可以在使用-swf-lib
编译器参数进行编译时包含一个 swf 库(而不是 swc),如果您需要多个库,您可以使用 swfmill
工具合并多个库。 Haxe docs 中有一个例子。
2) Branden 完美地回答了这个问题 :) 虽然我可能会添加一个确实可以提高性能的功能,尤其是在闪存应用程序中,是“内联”。由于 Nicolas(Haxe 的创建者)添加了更多字节码 optimizations on inlined functions。还有更多的优化planned。
【讨论】:
【参考方案2】:您可以在 lib.haxe.org 上找到很多有用的东西...(为此检查 haxelib(有点像红宝石,有人可以说))...还有一个 AS3 到 Haxe 转换器...所以可以尝试将 corelib 的相关部分翻译成 Haxe ......不过,我猜需要进行一些手动修复...... 当涉及到控件时,只需查看 Haxe gui 库......其中有几个漂浮在网络上......
现在 Haxe 专业人士: Haxe 的一个好处是,编译器的速度要快得多,因此您不必花费大量时间进行编译……说真的,它会有所作为……
此外,Haxe 是一种更丰富的语言,正如 Branden 已经暗示的那样......我只是想补充一下,你真的应该检查一下枚举......
不过,Haxe 最好的一点是,当我开始编写服务器时,您可以使用相同的语言,再加上 Haxe 远程处理等功能让您的生活变得超级轻松......
有一些 AS3 专业人士,但问题是,他们中的大多数只是与以下事实相关,即如果您尝试在 Haxe 中像在 AS3 中那样解决问题,该语言看起来很古怪,并且在运行时会显示出意外的行为...如果您保持严格和打字,一切都会变得完美...
希望对您有所帮助... ;)
问候
back2dos
【讨论】:
哇,感谢您提供有关 haxe 远程处理的信息。我还发现了 SPOD,它看起来是一个非常好的 ORM,可以与 neko 服务器结合使用。我想我只是巩固了我的技术选择:)【参考方案3】:1) 是的,也不是。从 2.03 开始,Haxe 可以导出 SWC。这意味着您可以在 Haxe 中编写代码,编译为 SWC,然后将该 SWC 与 Flash 一起使用。目前 Haxe 不支持 SWC 输入,只支持输出(尽管我相信他们正在努力)。
2) 是的,使用 Haxe 有很多好处 - 与 Adobe 的编译器不同,Haxe 实际上在编译期间做了一些优化(这一直是社区中争论的主要焦点)。此外,Haxe 使用了一些“隐藏”的新字节码,这些字节码是由 Flash Player 10 产生的,目前 Flash 或 Flex 都没有使用 - 只有 Adobe 的 Alchemy(从 C/C++ 源代码交叉编译成 SWC)。
我所知道的唯一“陷阱”是它有点怪异的 ActionScript - 事情的不同之处足以让你大吃一惊。话虽如此,具有泛型和更快的代码等功能,而且付出的代价很小!
【讨论】:
感谢您的信息。我绝对有兴趣在设计游戏时考虑到泛型。虽然目前缺乏对阅读 SWC 的支持令人失望,但我相信我可以解决它。也许有本地 haXe 库提供与我一直在使用的一些 adobe as3 核心库相同的功能。 for 1) 你也可以在 haxe 中使用 as3 编写的 swcs。有一个编译器标志可以将它们用作外部库。 swc 只是一个带有其他数据的压缩 SWF。在 Haxe 中使用 swfs 是很有可能的。这里有一个例子:haxe.org/doc/flash/aswingas3?lang=en 和这里:haxe.org/doc/flash/flex?lang=en【参考方案4】:NME 改进了 Haxe 的跨平台支持,为 Windows、Mac、Linux、android、ios、webOS、Flash 和 html5 应用程序提供单一 API,无需大惊小怪。
Haxe 编译器明显比 MXMLC 快,特别是如果您习惯从 Flash IDE 编译,而不是从 FlashDevelop 等托管 Flex 编译器外壳的 IDE 编译。如前所述,还有许多附加的语言功能,如迭代器、typedef、结构、宏和其他不错的功能。
最棒的是,由于您始终可以定位 Flash,因此几乎没有风险。 Haxe 语言非常相似,如果您不介意支持单一平台,您可以针对 Flash 支持的所有功能。但是,只要您坚持使用 NME 的跨平台 API,您就可以体验到移动和桌面平台的巨大性能和功能优势,或者尝试 HTML5 支持。
最后,还有一个 SWF 库,它使从 C++ 访问 SWF 内容成为可能。当然,这在 Flash 目标上一直是可能的,但很快就应该能够在 Flash IDE 中定义一个接口,并在移动或桌面 C++ 应用程序以及 Flash/AIR 目标中使用它。
【讨论】:
【参考方案5】:新release of Haxe today。添加 C++ 的官方目标。
所以现在您可以使用相同的源来定位 ActionScript 和 C++。
【讨论】:
以上是关于Actionscript 3 vs Haxe:为新的 Flash 项目选择哪个?的主要内容,如果未能解决你的问题,请参考以下文章