22

我一直在浏览 Haxe / OpenFL / Flixel 的网站,但很难理解每个网站的用途。

据我了解:

Haxe 是一种可以部署到多个平台的语言。OpenFL 与 Flash 有关。Flixel 是一个帮助您制作游戏的库。

谁能纠正我/让它更清楚。

4

2 回答 2

54

斧头

引用haxe.org

Haxe 是一个开源工具包,基于现代、高级、严格类型的编程语言、交叉编译器、完整的跨平台标准库以及访问每个平台的本机功能的方式。

语:

Haxe 是一种编程语言。它类似于 AS3、C# 等。它是严格类型的,但具有很好的类型推断。它具有许多强大的功能,例如模式匹配枚举 (ADT)等。无论您编译到哪个目标,这些功能都有效。

标准库:

  • Haxe 可以编译为 JavaScript、C++、Flash、Java、C#、PHP、NekoHashLink、Python 和 Lua。它具有跨平台一致工作的低级标准类,例如:、、、、等String。它还具有一些有用的跨平台代码,用于序列、、、格式化IntFloatDateMapXmlJsonDate

  • 作为一般规则,api.haxe.org上顶层或haxe包中的任何内容都将适用于您编译到的任何目标。

  • 每个目标都有自己的包。这些使您可以通过externs访问该目标的本机功能。例如。js.html有 DOM 外部,flash有用于 Flash API 的外部,等等。

  • 有一个sys包,可用于“后端”目标:C++、Java、Neko、HashLink、PHP、Python 和 Lua。它也可以在带有hxnodejs库的 JavaScript/Node 上使用。

其他的东西:

与许多其他编译器相比,Haxe 编译器的速度非常快。这本身就是一个卖点。还有,它可以让你以一种非常强大的方式进行大量的预处理。然后是像 Haxelib 这样的工具,可以让你链接到 3rd 方库。

开放式FL

Haxe 刚开始的时候,Flash 还是个大目标,到处都安装了它,非常适合制作游戏。许多 Flash 开发人员喜欢 Haxe,因为它速度快、输入安全、开源,并且为他们提供了更多功能。但 Flash API(精灵、图形、影片剪辑、事件)仅适用于 Flash,而不适用于移动设备或 HTML5 等。一旦 Flash 开始变得不那么流行,这就是一个问题。

OpenFL 所做的就是让 Flash API 在其他 Haxe 目标上工作。因此,您使用精灵和图形以及 Flash 样式代码编写了一个针对 Flash API 的 Haxe 游戏。然后,您要编译为 C++(针对移动设备等)。OpenFL 允许您的 Haxe 代码使用 Flash API,即使针对 C++ 或 JavaScript。例如,OpenFLflash.graphics.DisplayObject不仅为 flash 创建类,还为 C++ 和 JavaScript 创建类。因此,如果您知道如何编写 Flash 游戏,那么您已经接近编写 OpenFL 游戏了。

OpenFL 还有一些很棒的工具,可以让你更轻松地将游戏部署到特定平台。Haxe 目标是“JS”、“SWF”、“C++”之类的东西,OpenFL 平台是“iOS”、“Android”、“Switch”、“HTML5”、“Windows EXE”等。当你听说 Haxe针对移动设备,很多时候它是 OpenFL,因为它与 Haxe 一起使用来编译你的代码(成 C++、JS、SWF 或其他),然后将这些二进制文件打包到移动设备上。

弗利克塞尔

Haxe 是一种语言、编译器和标准库。
OpenFL 在此基础上构建并添加了跨目标工作的 Flash API。
HaxeFlixel 在此基础上进一步构建,并提供适用于 OpenFL 的游戏特定 API。

这一切如何协同工作的一个例子:

  • 你创建一个游戏。所有这些都是用 Haxe 编写的。诸如玩家姓名、分数和完成信息之类的东西都使用标准库中的数据结构。它们可以在您的游戏中运行,但您也可以让它们在您的 PHP 网站上运行。

  • 您的游戏使用 OpenFL 编译为 Flash、HTML5、iOS 和 Android。作为 OpenFL 的一部分,您还可以访问标准 Flash API 类,例如舞台和按钮以及鼠标事件,您可以将它们用于菜单屏幕。因为 OpenFL 为其他目标提供了 flash.* 类,所以您的应用程序可以编译成所有不同的东西。

  • 对于您的实际游戏,性能很重要,Flash DisplayList 方法有点慢,并且没有针对游戏进行优化。HaxeFlixel 针对游戏进行了优化,速度非常快。因此,您可以使用 HaxeFlixel 的 API 来设计您的游戏。

概括

Haxe 是一种语言、编译器、工具包和标准库。它为跨平台代码提供了最基本的工具。

OpenFL 建立在 Haxe 之上,并为多个目标(Flash、C++、JavaScript)提供 Flash API,并使其易于编译到一系列平台:web、native、iOS、Android、Nintendo Switch 等。

HaxeFlixel 基于 OpenFL 构建 - 它使用 OpenFL 提供的 API 来创建高性能且易于制作 2D 游戏的游戏特定框架。

于 2013-12-21T01:31:48.017 回答
16

我最近才发现 HaxeFlixel,我喜欢它!我来自使用 Flixel 在 AS3 中制作游戏,现在我可能永远不会回去了!


因此,尝试回答您的问题(以及我理解的方式):

Haxe 是一种底层。它是可以编译成 Flash、Windows、Android、iOS 等的编程语言。

OpenFL 是一个软件开发工具包,它使用 Haxe 让游戏通过 Haxe 运行变得更容易、更流畅,让您轻松利用 Haxe 的兼容性功能,而不必处理您可能遇到的许多麻烦和问题进入。它为您处理了很多基本的东西,并使编码变得更容易。

HaxeFlixel 是一个 2D 游戏框架,基于 Adam Atomic 的 Flixel for AS3 和 Photon Storm 的 Flixel Power Tools。它使使用与 AS3/Flixel 几乎相同类型的代码制作 2D 游戏变得更加容易。

刚开始时,您只需要担心最高级别,在您的情况下是 HaxeFlixel。

所以,总结一下:Haxe 是一种强大的编程语言。您可以尝试弄清楚如何“按原样”使用它进行编码,这很复杂,或者您可以使用多个库之一来简化它 - OpenFL 就是这些库之一。

您可以单独使用 OpenFL,并用它编写游戏,或者您可以使用多种不同框架中的一种来简化它 - HaxeFlixel 就是这些框架之一。还有StarlingHaxePunk框架,它们各有优缺点。

意见时间!

我强烈建议坚持使用 HaxeFlixel - 因为它与 Flixel 非常相似,所以我设法拿起它并学习如何使用它,并在整整 1 个月内制作了这款完整的游戏,并发布了 Flash、Windows 和 Android 版本。同一天 - 考虑到我之前没有接触过 Haxe,而且之前甚至没有时间开始研究 Android 开发,这真是太棒了。顺便说一句,该游戏的源代码是完全开源的,所以请随意挖掘并看看我是怎么做的。

HaxeFlixel 的社区也非常棒,人们会帮助你并回答问题。

开始使用 HaxeFlixel 并不太难:

http://haxeflixel.com/documentation/getting-started/

按照这些步骤,您至少可以Hello, World!在几分钟内启动并运行(不包括下载和安装所有东西所需的时间)。就像我之前提到的,在您对它更满意之前,只需按照 Haxe 和 OpenFL 的说明进行操作,但现在不要考虑它!

祝你好运!如果你在任何地方成功,请告诉我!

于 2013-12-19T21:37:17.193 回答