【发布时间】:2014-01-08 08:01:48
【问题描述】:
我一直在浏览 Haxe / OpenFL / Flixel 的网站,但很难理解每个网站的用途。
据我了解:
Haxe 是一种可以部署到多个平台的语言。 OpenFL 与 Flash 有关。 Flixel 是一个帮助您制作游戏的库。
谁能纠正我/让它更清楚。
【问题讨论】:
标签: haxe openfl haxeflixel
我一直在浏览 Haxe / OpenFL / Flixel 的网站,但很难理解每个网站的用途。
据我了解:
Haxe 是一种可以部署到多个平台的语言。 OpenFL 与 Flash 有关。 Flixel 是一个帮助您制作游戏的库。
谁能纠正我/让它更清楚。
【问题讨论】:
标签: haxe openfl haxeflixel
引用haxe.org:
Haxe 是一个开源工具包,它基于现代、高级、严格类型的编程语言、交叉编译器、完整的跨平台标准库以及访问每个平台的原生功能的方式。
语言:
Haxe 是一种编程语言。它类似于 AS3、C# 等。它是严格类型的,但有很好的type inference。它有很多强大的功能,例如Pattern Matching、Enums (ADTs)、Macros 等。无论您编译到哪个目标,这些功能都有效。
标准库:
Haxe 可以编译为 JavaScript、C++、Flash、Java、C#、PHP、Neko、HashLink、Python 和 Lua。它具有跨平台一致工作的低级标准类,例如:String、Int、Float、Date、Map 等。它还有一些有用的跨平台代码,例如 Serialization 、Xml、Json、Date formatting 等
作为一般规则,api.haxe.org 上的任何顶级内容或 haxe 包中的任何内容都将适用于您编译到的任何目标。
每个目标都有自己的包。这些使您可以通过externs 访问该目标的本机功能。例如。 js.html 有 DOM 外部,flash 有 Flash API 的外部等。
有sys 包,可用于“后端”目标:C++、Java、Neko、HashLink、PHP、Python 和 Lua。它也可以在带有 hxnodejs 库的 JavaScript/Node 上使用。
其他内容:
与许多其他编译器相比,Haxe 编译器的速度非常快。这本身就是一个卖点。还有macros,它可以让你以一种非常强大的方式进行大量的预处理。然后是像 Haxelib 这样的工具,可以让你链接到 3rd 方库。
当 Haxe 刚开始时,Flash 仍然是一个大目标,它无处不在,非常适合制作游戏。许多 Flash 开发人员喜欢 Haxe,因为它速度快、输入安全、开源,并且为他们提供了更多功能。但 Flash API(精灵、图形、影片剪辑、事件)仅适用于 Flash,而不适用于移动设备或 HTML5 等。一旦 Flash 开始变得不那么流行,这就是一个问题。
OpenFL 所做的是使 Flash API 可以在其他 Haxe 目标上运行。因此,您使用精灵和图形以及 Flash 样式代码编写了一个针对 Flash API 的 Haxe 游戏。然后,您要编译为 C++(针对移动设备等)。 OpenFL 允许您的 Haxe 代码使用 Flash API,即使针对 C++ 或 JavaScript。例如,OpenFL 不仅为 flash 创建了flash.graphics.DisplayObject 类,还为 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 游戏的游戏特定框架。
【讨论】:
我最近才发现 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 就是这些框架之一。还有Starling 和HaxePunk 框架,它们各有优缺点。
我强烈建议坚持使用 HaxeFlixel - 因为它与 Flixel 非常相似,所以我设法拿起它并学习如何使用它,并在 1 个月内制作了 this complete game 并发布了 Flash、Windows 和 Android 版本所有这些都在同一天 - 考虑到我之前没有接触过 Haxe,而且之前甚至没有时间开始研究 Android 开发,这真是太棒了。顺便说一下,该游戏的源代码是完全开源的,所以请随意深入了解我是如何做到的。
HaxeFlixel 社区也非常棒,人们会帮助您并回答问题。
加入并开始使用 HaxeFlixel 真的不是太难:
http://haxeflixel.com/documentation/getting-started/
按照这些步骤,您至少可以在几分钟内启动并运行Hello, World!(不包括下载和安装所有内容所需的时间)。就像我之前提到的,在您对它更加熟悉之前,只需按照 Haxe 和 OpenFL 的说明进行操作,但现在不要考虑它!
祝你好运!如果你成功了,请告诉我!
【讨论】:
exe 文件在我的电脑上正常运行。有什么方法可以让最终用户在没有这个的情况下运行 HaxeFlixel exe 游戏?
.exe 流行(有很多用户使用它),因此它的指纹已经在各种防病毒数据库中。还有软件的数字签名,这可能会有所帮助,但我真的不知道:)