Cocos2D-X学习4:几个重要的类:Node、Director、Scene、Layer

时间:2022-01-11 05:12:49

一、Director导演类:

1、作用:

可以理解为拍电影时的导演,在恰当的时刻选择让哪些节点显示和隐藏,在必要时退出游戏。

2、父类:

Ref类,是一切的起源。

3、使用示例:

<span style="font-size:18px;">    auto director = Director::getInstance(); //创建导演
auto glview = director->getOpenGLView(); //获取OpenGL渲染对象
if(!glview) {
glview = GLViewImpl::create("My Game");
glview -> setFrameSize(640,360); //设置窗口大小
director->setOpenGLView(glview); //将openGL对象传递给导演
}

// turn on display FPS
director->setDisplayStats(true); //显示FPS

// set FPS. the default value is 1.0/60 if you don't call this
director->setAnimationInterval(1.0 / 60); //设置默认FPS

// create a scene. it's an autorelease object
auto scene = MyWorld::createScene(); //创建场景

// run
director->runWithScene(scene); //运行</span>
由示例第6、10、13行可见,屏幕的上显示的内容,都是由导演director来决定的。


二、Node节点类

1、作用:

Cocos2D-X引擎中与渲染有关的大多数类都来自于Node,它是Cocos2d-x场景图中的最基本的元素。(注意这里所说的场景图不是场景类,指得是屏幕上一切已经显示了的或者要显示的元素的容器,可以简单的理解为屏幕。而场景则是节点的一个子类,是屏幕上显示的一个元素。)

2、重要的子类:

场景Scene、图层Layer、精灵Sprite以及精灵集合SpriteBatchNode。

3、父类:

与Director相同,父类是Ref。

4、属性:

下表为Node类的一些常用属性,这些属性都和画面的绘制有关。

属性 描述 默认值
position 位置 0,0
scale(x,y) 缩放尺寸 1,1
rotation(in degrees,clockwise) 旋转角度 0
anchor point 锚点 0,0
contentSize 尺寸 0,0
visible 是否可见 TRUE

除了这些基础绘制相关的属性外,Node类以及它的子类还有3个明显的特点:

(1)可以包含Node类对象作为子节点。对应的方法为addChild、getChildByTag、removeChild等。

(2)每一个Node类以及子类都可以使用定时器。对应方法为schedule、unschedule等。

(3)所有的Node类以及子类都能够执行动作。对应的方法为runAction、stopAction等。

除了上述的三点外,各个子类还包含额外的属性与函数。

除了继承父类的特点外,Node子类都会创建自身的内容,它们是增添属性或者函数,可能再传递给下一代子类。通常Node子类需要改变3个内容:

(1)类对象初始化的方式和内容。

(2)编写时间回调函数。

(3)重载绘制函数。


三、Scene场景类

1、作用:

场景切换的基本单位,提供了丰富的切换效果,Cocos2d是以场景为单位对屏幕进行渲染的。

2、父类:

Node类。

3、分类:

(1)游戏内容场景:主要展示游戏中的内容,如地图、怪物等。 (2)选项类场景:如游戏设置界面、关卡选择界面等。 (3)展示类场景:如游戏的开场动画、RPG游戏战斗结束后的胜利信息等。

4、场景的创建示例:

<span style="font-size:18px;">auto scene = Scene::create();   //创建一个场景对象
auto layer = MyWorld::create(); //创建Myscene对象
scene->addChild(layer); //将layer加入到场景scene中去
return scene; //返回创建好的场景对象</span>
首先使用create方法来创建场景对象,其返回了一个Scene类型的对象,而Scene继承于Node,因此也可以说返回了一个Node类型的对象。
第三行中,创建的Layer对象可以理解为Scene的子节点,当将它增加到Scene中时,就构成了一个完整的场景链接关系(第六部分展示),当父节点被绘制时,其中的子节点也会同时被绘制在屏幕上。 注意:在一个项目中,可以存在多个场景,但是同时有且仅有一个场景处于激活状态,也就是说同时只能显示一个场景。

四、Layer图层类

1、作用

组成场景的基本单位,多个图层可以共存于一个场景中,方便前景背景的分层处理,向用户展示内容。

2、父类:

Node类。

3、主要完成的任务:

(1)接收用户操作,如点击、触摸屏幕等。(2)作为显示内容的容器,如在图层中显示游戏角色、选项、文字等内容。(3)作为游戏背景使用。

五、Sprite精灵

1、作用:

玩家能看到的最基本的单位。

2、父类:

Node类。

六、完整场景的链接关系

如图是完整场景的链接关系,当父节点被绘制时,其中的子节点也会同时被绘制在屏幕上。
Cocos2D-X学习4:几个重要的类:Node、Director、Scene、Layer
Cocos2D-X学习4:几个重要的类:Node、Director、Scene、Layer