场景
场景是个虚拟的概念,在Cocos2d-x中场景使用Scene表示,我们可以向场景中添加各种层、精灵、菜单等。场景是游戏的基础,所有的对象都要放在场景中。
创建一个场景类对象:
auto scene = HelloWord::createScene();
场景类源码:
class CC_DLL Scene : public Node{
public:
static Scene *create();
Scene();
virtual ~Scene();
virtual bool init() override;
...
}
导演
导演类(Director)负责把控全场,所有场景切换工作都必须经过导演来执行。
加载第一个场景
在刚进入游戏时候需要加载一个初始场景,代码如下:
Director::getInstance()->runWithScene(scene);
其中,runWithScene只在加载第一个场景时使用。
简单场景切换
场景切换代码为:
Director::getInstance()->replaceScene(scene);
★一个栗子★
新建的Cocos2d-x中已有一个默认场景HelloWorldScene,下面再创建一个新的场景,命名为SecondScene,代码如下:
#ifndef _SENCONDSCENE_H_
#define _SECONDSCENE_H_
#include "cocos2d.h"
using namespace cocos2d;
class SecondScene : public Layer{
public:
static Scene* createScene();
virtual bool init();
CREATE_FUNC(SecondScene);
};
#endif
如何创建场景类?
auto scene = HelloWord::createScene();
init函数的实现,代码如下:
#include "SecondScene.h"
Scene* SecondScene::createScene(){
// create a scene
auto scene = Scene::create();
// create a layer
auto layer = SecondScene::create();
// add layer to scene
scene->addChild(layer);
reurn scene;
}
bool SecondScene::init(){
Lable* lable = Lable::create("Hello!","Arial", 40);// create a Lable tag object
// set lable position
lable->setPosition(cpp(300, 200));
// add Lable object to scene
this->addChild(lable);
return true;
}
- HelloWorldScene场景切换到SecondScene场景
修改HelloWorldScene场景的menuCloseCallback函数即可,menuCloseCallback是关闭按钮的回调函数,代码如下:
void HelloWorld::menuCloseCallback(Ref *pSender){
// 切换场景
Director::getInstance->replaceScene(SecondScene::createScene());
}
注意:HelloWorldScene类上面加入#include “SecondScene.h”
场景切换含特效
参考《Cocos2d-x 3.x 游戏开发之旅》 P31—35
层
一个场景里包含很多层,类比Photoshop中层来理解。
创建层的代码:
Layer* layer = Layer::create();
精灵
最常见精灵,比如愤怒的小鸟中各种小鸟是精灵,超级玛丽中人物玛丽是精灵。创建精灵对象,代码如下:
// create a sprite object using a picture
Sprite* sprite = Sprite::create("CloseNormal.png");
// set sprite position
sprite->setPosition(Point(200,200));
Layer* layer = Layer::create();
// add sprite to layer
layer->addChild(sprite);
注意:创建精灵对象最简单的一种方式是直接用一张图片素材,还有Cocos2-x中创建对象的方式大部分是create或者是以create开头的函数。精灵的功能十分强大,放大、缩小、拉伸、压缩、旋转以及改变颜色等等。
菜单
游戏中的菜单按钮。
参考《Cocos2d-x 3.x 游戏开发之旅》 P37—P39
节点
Cocos2d-x中最重要的3个类:
- Ref:Cocos2d-x引擎的基类,大部分类都继承它;
- Node:拥有简单功能的类
- Layer:继承Node,拥有多种功能的类,特别是屏幕触摸监听。
版权声明:本文为iFuMI原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。