Scene:场景
在Cocos2d-x中,Scene定义了一个场景。场景只是层的容器,包含了所有需要显示的游戏元素。场景还有一个作用就是流程控制。利用Director::replaceScene等方法,可以使游戏在不同场景中自由切换。
Layer:层
Layer定义了一个层,同场景类似,层也扮演着容器的角色。然而与场景不同的是,层通常包含的是直接呈现在屏幕上的具体内容:我们需要在层中放入精灵、文本标签或其他游戏元素;设置游戏元素的属性,如位置、方向和大小;设置游戏元素的动作等。由此可见,游戏开发的大部分编码时间都用在创建层上。通常层中的对象功能类似,耦合较紧,与层中游戏内容相关的逻辑代码也编写在层中。
在组织好层后,只需要把层按照顺序添加到场景中就可以显示出来了
(1)addChild方法:其中child参数为将要添加的节点。对于场景来说,通常我们添加的节点就是层。先添加的层会被置于后添加的层之下。如果想要为它们指定先后次序,可以使用不同的zOrder值,zOrder代表了该节点下元素的先后次序,值越大则显示顺序越靠上。zOrder的默认值为0.tag是元素的标识码,如果为子节点设置了tag值,就可以在她的父节点中利用tag值找到它。
1、Node::addChild(Node *child)
2、Node::addChild(Node *child,int zOrder)
3、Node::addChild(Node *child,int localZOrder,int tag)
例:
this->addChild(backgroundLayer,0);
this->addChild(actionLayer,100);
this->addChild(touchLayer,200);
this->addChild(menuLayer,500);
(2)Layer输入事件:
1. Layer::setTouchEnabled(bool enabled):获取或设置是否接受触摸事件
2.Layer::setAccelerometerEnabled(bool enabled):获取或设置是否接受加速度计事件
3.Layer::setKeypadEnabled(bool enabled):获取或设置是否启用键盘输入支持
4.带目标的触摸事件的回调函数:ccTouchBegan,ccTouchEnded,ccTouchMoved,ccTouchCancelled,
5. 标准触摸事件的回调函数:ccTouchesBegan,ccTouchesMoved,ccTouchesEnded,ccTouchesCancelled
6.注册触摸事件的回调函数,在此函数内设置需要注册的触摸类型:registerWithTouchDispatcher
7.加速度计改变事件的回调函数:didAccelerate