首先介绍一下cocos2d-x中的框架结构,如图
其中:
导演:是整个游戏的领导者,游戏中的所有动作,动画,已经场景的跳转等,都需要经过导演的“同意”,所以在执行动作的时候一定要注意调用导演类。
场景:场景就是游戏中的每一个关卡,当我们设置的通关游戏,跳转到下一个关卡时,需要用到场景类。所以导演可以控制多个场景。
布景层:布景层也就是游戏的背景,因为每一个关卡都需要有不同的背景,而在一个关卡中也可以有多个背景(比如远近景的交替),所以场景也可以控制多个布景层。
节点:节点就是游戏中的人物,可以是npc也可以是主角等所有显示在屏幕上的元素,但要注意,节点本身并不承载任何显示在屏幕上的任何图片图形等内容,但是所有的这些元素都是继承自节点的,是节点的子类。所以也可以说,显示的元素就是节点。
下面主要介绍一下节点类
节点类(Node)继承自Ref,在xcode中按住command键点击节点,可以查看继承关系。
常用的布景层类(Layer)、场景类(Scene)、精灵类(Sprite)都属于节点类。
那么,节点类的主要功能有:
1.每一个节点类都可以设定坐标、设置动作(旋转、位移)
2.每一个节点都是以“锚点”为参考点。
3.每一个节点都有父节点,并且都可以通过addChild添加多个子节点。当父节点变换时,子节点也会随之变换。
4.每个节点都可以计划任务。
*锚点就是一个节点的中心点,节点会以这个点为参照物设置所处的位置。
下面通过代码介绍几个节点的功能:
1.设定节点坐标
auto sp1=Sprite::Create(‘图片的名称’);
sp1->setPosition(100,100);//设置sp1的位置在100,100处。
2.设置锚点
sp1->setAnchorPoint(Vec2(0.5,0.5));设置锚点在节点的中央
3.设置动作
sp1->setRotation(135);节点旋转135°。
4,节点的父子关系
sp1->addChild(sp2);设置sp2为sp1的子节点
5。节点的隐藏和显示
sp1->setOpacity(175);设置节点的透明度。
6.执行计划任务
将设计好的动作设置tag。
sp1->setTag(888);
通过获取tag,使节点的动作自动发生改变
Sprite * nows=(Sprite *)this->getChildByTag(888);
nows->setRotation->getRotation()+10);让旋转角度每次+10。
然后通过Schedule函数调用这个函数
sp2->schedule(schedule_selector(GameScene::gamelogic),1)一秒钟调用一次。
这样就可以使sp1每秒钟自动的旋转10°。