官方资讯

v2.0.0-beta6 更新内容简介



此次更新主要针对以下几点:

命名上的一些变化

File 类更名为 Path 类,因为这个类只提供一些系统路径、数据保存路径等。

监听器

时隔两个月,我们又将 Listener(监听器)这一概念加了进来,它配合 Input 类可以达到监听用户按键和鼠标消息的功能。

监听器的执行方式和定时器类似,在监听到用户输入时执行回调函数。你需要先创建一个回调函数。

1
2
3
4
5
6
7
8
9
void GetInput()
{
// 假设存在精灵 sprite
// 用户按下右键时,将精灵向右移动
if (Input::isKeyDown(KeyCode::RIGHT))
{
sprite->movePosX(1);
}
}

然后创建一个监听器,并启动它。

1
2
3
4
5
6
// 创建监听器
auto l = new Listener();
// 设置监听器的回调函数为 GetInput 函数
l->setCallback(GetInput);
// 启动监听器
l->start();

监听器启动后,当检测到用户按键时,它会自动执行 GetInput 函数,判断用户按下的是否是右键,如果是,移动精灵。

如果你觉得创建监听器的方法太繁琐,可以直接使用 Input::add 函数添加一个监听器。

1
2
// 添加监听器
Input::add(GetInput);

Input::add 函数把 GetInput 函数添加到了监听队列中,检测到用户输入时自动执行 GetInput 函数。

默认形状

为了让 Shape(形状)更好使用,现在每个节点都默认包含了一个矩形形状。

让我们看看 FlappyBird 游戏中展现的效果。调用场景的 Scene::setShapeVisiable 函数,让形状可见,如下图所示

FlappyBird截图

可以看到,即使没有创建 Shape,所有的图形边框也都被显示了出来。这在 Debug 时很有帮助,同时也能更好的帮助我们观察游戏中物体的运动。

之前 Shape 类是为了检测物体间碰撞存在的,现在所有节点都有 Shape,为了防止碰撞的频繁发生,也为了游戏性能,碰撞检测默认是关闭的,可以通过 ShapeManager::setCollisionEnable 函数重新启用。开启后,当 ShapeManager 检测到碰撞发生时,会自动调用发生碰撞节点和其所在场景的 onCollide 函数。

如果你不想让节点包含默认形状,可以通过 Node::setDefaultShapeEnable 函数开启或关闭。关闭后,新建的节点将不包含默认形状。

数据字段属性

Data 类用来保存用户的数据,它将数据和键值对应保存,当用户需要取出数据时,可以根据键值取出相应的数据。键值和数据的关系就像钥匙和抽屉,一把钥匙对应一个抽屉,一个键值也对应一个数据。

现在,Data 增加了 字段 这个新属性,就好比柜子,一个柜子有很多个抽屉,你可以把数据放置到不同的柜子里。这样,用同一把钥匙,可以在不同的柜子打开不同的抽屉。

Data 保存的文件名也可以通过 Data::setDataFileName 设置(注意:不应有特殊字符和后缀名),就好比房间的概念。

简单来说,一个房间里面有很多个柜子,柜子里有很多个抽屉,一个抽屉里面放着一个物品。
对应到 Data 上,一个数据文件有很多个字段,字段里有很多个键值,一个键值对应一个数据。


立即下载 返回