Roope的Cocos2d-x学习之旅 001:基础概念学习——导演、场景、层
I just don’t want to regret it: 在Cocos2d-x-3.x引擎中,采用节点树形结构来管理游戏对象,一个游戏可以划分为不同的场景,一个场景又可以分为不同的层,一个层又可以拥有任意个可见的游戏节点(即对象,游戏中基本上所有的类都派生于节点类Node)。可以执行Action来修改游戏节点的属性,使其移动、旋转、放大、缩小等等。 1.导演(Director): 2.场景(Scene): runWithScene( Scene *scene ) 启动游戏,并运行scene场景。本方法在主程序第一次启动主场景的时候调用。如果已有正在运行的场景则不能调用该方法;会调用pushScene–>startAnimation。 pushScene( Scene *scene ) 将当前运行中的场景暂停并压入到代码执行场景栈中,再将传入的scene设置为当前运行场景,只有存在正在运行的场景时才调用该方法; replaceScene( Scene *scene ) 直接使用传入的scene替换当前场景来切换画面,当前场景被释放。这是切换场景时最常用的方法。 popScene() 释放当前场景,再从代码执行场景中弹出栈顶的场景,并将其设置为当前运行场景。如果栈为空,直接结束应用。和PushScene结对使用 pause() 暂停当前运行场景中的所有计时器和动作,场景仍然会显示在屏幕上 resume () 恢复当前运行场景的所有计时器和动作,场景仍然会显示在屏幕上 同时场景是层的容器,包含了所有需要显示的游戏元素。通常,当我们需要完成一个场景时候,会创建一个Scene的子类,并在子类中实现我们需要的功能。比如,我们可以在子类的初始化中载入游戏资源,为场景添加层,启动音乐播放等等。 3.层(Layer): addChild( Node * child ) addChild( Node *child,int zOrder ) addChild( Node *child,int zOrder,int tag ) 其中,Child参数就是节点。对于场景而言,通常我们添加的节点就是层。先添加的层会被置于后添加的层之下。如果需要为它们指定先后次序,可以使用不同的zOrder值。tag是元素的标识号码,如果为子节点设置了tag值,就可以在它的父节点中利用tag值就可以找到它了。层可以包含任何Node作为子节点,包括Sprites(精灵),Labels(标签),甚至其他的Layer对象。 4.精灵(Sprites): 创建精灵的几种方式:
直接创建:
auto sprite = Sprite::create("HelloWorld.png");
this->addChild(sprite,0);
使用纹理来创建精灵
auto sprite1 = Sprite::createWithTexture(TextureCache::getInstance()->addImage("HelloWorld.png"));
this->addChild(sprite1,0);
使用精灵帧来创建精灵
auto sprite2=Sprite::createWithSpriteFrameName("HelloWorld.png");
this->addChild(sprite2,0);
在Cocos2dx中实现精灵显示的基本过程如下:
//创建Scene
auto scene = Scene::create();
//创建层
auto layer = HelloWorld::create();
//把层加入场景中
scene->addChild(layer);
//创建一个精灵
auto sprite = Sprite::create("HelloWorld.png");
//把精灵加到层里
layer->addChild(sprite,0);
5.标签对象(Label): 直接创建如:
Label* label = Label::create("Hello Cocos !","Arial",40 );
label->setPosition(ccp(500,300));
this->addChild(label);
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |