一、Director导演类:
1、作用:
可以理解为拍电影时的导演,在恰当的时刻选择让哪些节点显示和隐藏,在必要时退出游戏。
2、父类:
Ref类,是一切的起源。
3、使用示例:
<span style="font-size:18px;"> auto director = Director::getInstance(); //创建导演由示例第6、10、13行可见,屏幕的上显示的内容,都是由导演director来决定的。
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>
二、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(); //创建一个场景对象首先使用create方法来创建场景对象,其返回了一个Scene类型的对象,而Scene继承于Node,因此也可以说返回了一个Node类型的对象。 第三行中,创建的Layer对象可以理解为Scene的子节点,当将它增加到Scene中时,就构成了一个完整的场景链接关系(第六部分展示),当父节点被绘制时,其中的子节点也会同时被绘制在屏幕上。 注意:在一个项目中,可以存在多个场景,但是同时有且仅有一个场景处于激活状态,也就是说同时只能显示一个场景。
auto layer = MyWorld::create(); //创建Myscene对象
scene->addChild(layer); //将layer加入到场景scene中去
return scene; //返回创建好的场景对象</span>