cocos2d-x中的一些概念

cocos2d-x中有很多概念,下面就对这些概念做一下总结:
导演类
导演类CCDirector是cocos2d-x中一个非常重要的类,它是一个抽象类,用于管理场景对象,采用单例设计模式,在整个工程中只有一个实例对象。由于是单例模式能够保存一致的配置信息,便于管理场景对象
主要完成的工作如下:
初始化游戏和销毁游戏
管理调度场景
调整设置openGL信息
获取设置游戏的相关信息

CCDirector * pDirector = CCDirector::sharedDirector();  //得到一个导演类,采用的是单例的模式获取

CCDirector需要绑定一个OpenGL视图,将导演类所管理的场景绘制到绑定的OpenGL视图上。x引擎提供了CCEGLView,同样采用了单例模式。先拿到一个CCEGLView,然后将导演类和CCEGLView绑定。

CCEGLView *pView = CCEGLView::sharedOpenGLView();  
pDirector->setOpenGLView(pView); 
pDirector->setDisplayStats(true);   //开启FPS显示功能
pDirector->setAnimationInterval(1.0/60);  //设置每秒钟的帧率
CCSize size = pDirector->getWinSize();  //获取屏幕大小

场景类:
Scene场景也是cocos2dx中必不可少的元素,游戏中通常我们需要构建不同的场景(至少一个),游戏里关卡、版块的切换也就是一个一个场景的切换,就像在电影中变换舞台和场地一样。同时场景是层的容器,包含了所有需要显示的游戏元素。
一些函数的用法

// 运行一个场景  
void runWithScene(CCScene *pScene);  
// 把当前场景压入栈中,使其进入等待状态  
void pushScene(CCScene *pScene);  
// 从栈顶弹出一个场景对象  
void popScene(void);  
// 从栈中弹出所有场景对象,仅剩下根场景对象  
void popToRootScene(void);  
// 替换成新的场景对象  
void replaceScene(CCScene *pScene);  
// 结束执行,释放当前资源  
void end(void);  
// 暂停运行的场景  
void pause(void);  
// 恢复运行的场景  
void resume(void);  
// 绘制场景内容  
void drawScene(void); 

层:
Layer是处理玩家事件响应的Node子类。与场景不同,层通常包含的是直接在屏幕上呈现的内容,并且可以接受用户的输入事件,包括触摸,加速度计和键盘输入等。例如横屏打斗游戏,人物向前行走的过程中,背景会不断地滚动,但是游戏的控制按钮永远在固定的位置不变。要向场景添加层,我们可以使用addChild方法。

addChild( Node * child ) //child是节点,通常的节点就是层
addChild( Node *child, int zOrder ) //zOrder指层与层之间的顺序,
addChild( Node *child, int zOrder, int tag )  //tag是元素的表示号码,给子节点设置了tag值,就可以在父节点中通过tag值找到子节点
auto layer = LayerColor::create(Color4B(0, 128, 128, 255));  
layer->setContentSize(CCSizeMake(120, 80));  
layer->setPosition(Point(50, 50));  
addChild(layer, 10);  
auto layer1 = LayerColor::create(Color4B(128, 0, 128, 255));  
layer1->setContentSize(CCSizeMake(120, 80));  
layer1->setPosition(Point(100, 80));  
addChild(layer1, 20);  

精灵:
Cocos2d中的精灵和其他游戏引擎中的精灵相似,它可以移动,旋转,缩放,执行动画,并接受其他转换。Cocos2dx的Sprite由Texure,frame和animation组成,由openes负责渲染。
创建精灵:

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); //用精灵帧来创建精灵
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章