使用 NME 构建您的第一个游戏
如果您以前没有听说过,NME 是一个免费的开源框架,旨在为许多平台带来统一的功能集和原生性能,包括 BlackBerry® PlayBook™ 平板电脑和 BlackBerry® 10。

我知道在为 BlackBerry 平台开发游戏时有很多选择,但我希望与您分享我最喜欢的一个。如果您以前没有听说过,NME 是一个免费的开源框架,旨在为许多平台带来统一的功能集和原生性能,包括 BlackBerry® PlayBook™ 平板电脑和 BlackBerry® 10。
定义项目文件
构建 NME 项目时,首先要确保您有一个项目文件。这将告诉 NME 您的资源和源文件位于何处,以及应用程序名称、版本和作者等元数据。
与其他 BlackBerry 应用程序不同,您稍后不需要定义“bar-descriptor.xml”文件。NME 将根据 NME 项目文件中的值为您生成该文件。
<?xml version="1.0" encoding="utf-8"?>
<project>
<meta title="Asterisk Game" package="com.testing.asteriskgame" version="1.0.0" company="Joshua Granick" />
<app main="AsteriskGame" path="Export" />
<window width="800" height="600" unless="mobile" />
<source path="Source" />
<haxelib name="nme" />
<haxelib name="actuate" />
<assets path="Assets" rename="assets" exclude="icon-*.png" />
<icon path="Assets/icon-114.png" size="114" />
<icon path="Assets/icon-86.png" size="86" />
</project>
您可以在 这里 找到有关 NMML 格式的更多详细信息。
加载资源
NME 有一个 Assets
类,可以简化资源文件的加载。它接受一个路径,该路径基于您的项目的文件结构以及您在项目文件中包含的 <assets /> 节点。您可以使用 Assets
类同步加载位图数据、字节、字体引用、声音和纯文本。
如果需要异步加载资源,例如从远程服务器加载,您可以使用 NME 的 Loader
和 URLLoader
类,这超出了本文的范围。
创建位图
var bitmapData = Assets.getBitmapData ("assets/asterisk.png"); var bitmap = new Bitmap (bitmapData); addChild (bitmap);
除非您在内存中创建新的位图,否则第一步是从文件或 Web 服务器加载现有的图像资源。在这个示例中,我使用的是一个名为“asterisk.png”的现有图形,我已将其包含在我的项目中。
完成此过程后,我将拥有位图的数据,在 NME 中由 BitmapData
类表示。使用 BitmapData
对象,我可以使用多种可用的渲染方法之一。最简单和最常见的方法是创建一个 Bitmap 并将其添加到“显示列表”中。在 NME 中,有一个对象树,这些对象会被自动渲染。通过将显示对象添加到已经是“显示列表”成员的父级,它也会被渲染。通过这种方式,我们可以决定何时可以渲染我们的 Bitmap。
添加触摸交互
在屏幕上显示位图令人兴奋,但为了构建游戏,我们需要能够处理触摸交互。虽然 Bitmap 具有位置、大小、缩放和 alpha(透明度)等值,但 Bitmap
类无法处理触摸或鼠标交互。
添加此支持的最简单方法是将我们的位图放在一个 Sprite 中
var sprite = new Sprite (); var bitmap = new Bitmap (Assets.getBitmapData ("assets/asterisk.png")); sprite.addChild (bitmap); addChild (sprite);
Sprite
类是 NME 开发中最常见的类之一。除了作为 DisplayObject
(如 Bitmap
类)之外,一个 Sprite 实例还可以包含其他对象。Sprite
类还支持调度触摸和鼠标事件,这正是我们所需要的。
sprite.addEventListener (MouseEvent.MOUSE_DOWN, function (event) { bitmap.visible = false; });
添加事件侦听器可以响应对象上发生事件(例如 MouseEvent.MOUSE_DOWN
事件)。
NME 支持特定于触摸的 API,但大多数应用程序只需要侦听标准的鼠标事件即可。这些将适用于触摸屏以及传统的台式机和笔记本电脑系统,这使得您的项目更容易在多个外形尺寸上运行。
播放声音
var sound = Assets.getSound ("assets/fuzz.wav");
sound.play ();
感谢 NME 的 Assets
类,加载 Sound
很容易。然后您可以调用 play 到您的声音。
在内部,NME 在 BlackBerry 上使用 SDL_mixer 来播放音频。这为许多文件格式提供了出色的支持,但也存在一些限制。SDL_mixer 同时支持一个流“音乐”通道和多个事件“声音”通道。NME 将尝试根据文件扩展名自动检测文件是“音乐”还是“声音”,但可以在您的 NMML 项目文件中手动控制这一点。
SDL_mixer 仅在“音乐”通道中支持 MP3,而其他格式(如 OGG 和 WAV)可用于“声音”。这是一个需要注意的限制,特别是如果您使用 MP3 文件。
下载示例
您可以下载“Asterisk Game”,这是一个使用这些特性制作简单“打地鼠”风格游戏的小样本。星号将出现在屏幕上,玩家点击星号使其消失,直到时间用完。分数基于玩家在它们自行消失之前能够点击的星号数量,并且根据星号的大小授予奖励分数——较小的星号价值更高。
如果您喜欢本教程并想了解更多关于 NME 的信息,请在评论中留言!