26

我正处于一个新的 Flash 游戏项目的规划阶段,想知道哪种语言更适合使用?我已经对 Actionscript 3 有深入的了解,还没有使用过 Haxe,但是我已经阅读了语言参考文档,并且似乎 Haxe 具有我最喜欢的其他语言 C# 和 Ruby 的一些功能。

所以我的问题有两个部分:

1) Haxe 可以与闪存组件(swc 文件)互操作吗?例如,如果我使用 Flash IDE 为某些控件设置皮肤,我可以导入这些控件并在 Haxe 中使用它们吗?

2) Haxe 编译器有性能优势吗?或任何陷阱?

4

5 回答 5

14

1) 是的,也不是。从 2.03 开始​​,Haxe 可以导出 SWC。这意味着您可以在 Haxe 中编写代码,编译为 SWC,然后将该 SWC 与 Flash 一起使用。现在 Haxe 不支持 SWC 输入,只支持输出(尽管我相信他们正在研究这个)。

2) 是的,使用 Haxe 有很多好处——与 Adob​​e 的编译器不同,Haxe 实际上在编译期间做了一些优化(这一直是社区中争论的主要焦点)。此外,Haxe 使用了一些“隐藏”的新字节码,这些字节码是由 Flash Player 10 产生的,目前 Flash 或 Flex 都没有使用 - 只有 Adob​​e 的 Alchemy(它从 C/C++ 源代码交叉编译成 SWC)。

我所知道的唯一“陷阱”是它有点怪异的 ActionScript - 事情完全不同,它会让你大吃一惊。话虽如此,具有泛型和更快的代码等功能,而且付出的代价很小!

于 2009-06-25T18:32:46.560 回答
7

你可以在lib.haxe.org上找到很多有用的东西……(结帐 haxelib (有点像 ruby​​ gems,有人可以说))……还有一个 AS3 到 Haxe 转换器……所以可以尝试将 corelib 的相关部分翻译成 Haxe ......不过,我想需要一些手动修复......当涉及到控件时,只需查看 Haxe gui 库......其中有几个漂浮在网络上...

现在 Haxe 专家:Haxe 的一个好处是,编译器速度更快,所以你不用花很多时间编译......说真的,它会有所作为......

此外,Haxe 是一种更丰富的语言,正如 Branden 已经暗示的那样......我只是想补充一下,你真的应该检查一下枚举......

尽管如此,Haxe 最好的一点是,当我开始编写服务器时,您可以使用相同的语言,再加上 Haxe 远程处理等功能让您的生活变得超级轻松......

有一些 AS3 专业人士,但问题是,他们中的大多数只是与以下事实有关,即如果您尝试像在 AS3 中那样在 Haxe 中解决问题,该语言似乎很古怪,并在运行时显示出意想不到的行为......如果你保持严格和打字,一切都会变得完美......

希望对您有所帮助... ;)

问候

back2dos

于 2009-06-26T19:51:48.610 回答
2

今天新发布的 Haxe。添加 C++ 的官方目标。

所以现在您可以使用相同的源来定位 ActionScript 和 C++。

于 2009-07-27T01:07:21.803 回答
2

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 目标中使用它。

于 2012-02-07T05:53:13.777 回答
1

1) 您可以在使用编译器参数进行编译时包含一个 swf 库(而不是 swc)-swf-lib,如果您需要多个库,您可以使用该swfmill工具合并多个库。Haxe 文档中有一个例子。

2) Branden 完美地回答了这个问题 :) 虽然我可能会添加一个确实可以提高性能的功能,尤其是在闪存应用程序中,是“内联”。由于 Nicolas(Haxe 的创建者)在内联函数上添加了更多字节码优化。而且还有更多的优化计划

于 2009-08-22T11:46:11.367 回答