标签:
本人的习惯,在学习时一支笔、一个记事本伴随其身,记录下思路,应该这就是屌丝的气息,用不惯高大上的blog,其实说穿了是文笔不行,每每写的东西都词不达意,怕大家看到了会受误导。这次转blog是因为笔记本太多了,找以前记过的文章太费劲。好了,不费口水了,记录点点滴滴,从自己做起。下面就是记录下我学cocos2dx的点点滴滴。鉴于本人才疏学浅,如有不正之处,请多多谅解,不喜勿喷。
基本概念:
稍微有点接触过的cocos的都知道,cocos中最重要的几个概念就是导演(Director)、场景(Scene)、层(Layer,有的人习惯叫法为布景层)、精灵(Sprite)、节点(Node)等。导演控制着游戏的整个流程,而游戏流程的执行是通过切换一个个的场景来达到目的的,场景中又可以分为不同的层,一个层中又可以拥有任意多个的可见节点。下图是cocos2dx官网上的原图。
导演:
Director类是整个cocos2d引擎的核心,它控制着整个游戏的流程 (即场景的切换) ,包括获取窗体大小、投影类型、帧率设置、openGlView的设置和获取、事件分发、调度器的获取和设置等。我们可以通过调用 sharedDirector() / getInstance() 来获取我们Director实例,它采用单例设计模式,以便更好的管理和简化Director的操作。查看Cocos的源代码可以知道, virtual void setAnimationInterval(double interval) = 0; 为纯虚函数,所以Director类为抽象类,不能实例化。因此可以推出真正获取到的是一个指向Director子类的实例。具体可看cocos的源代码,它获取的 DisplayLinkDirector 的实例。 (注: sharedDirector()方法是3.x版本之前的,已不在维护,但是仍可用)
场景:
Scene类虽然很重要,但其实在Cocos中的代码不是很多,具体可以自行阅读,它派生自Node类,它的作用就是构建一个游戏中可见节点运行的环境,类似于唱大戏中的舞台,可以对舞台进行不同的装饰,并在之上表演不同的剧情。游戏中,切换场景就是代表着游戏的流程的执行过程。而控制场景切换是由Director类执行的。Director类提供了常见的操作场景的方法:
层:
Layer是处理玩家事件响应的Node子类。与场景不同,层通常包含的是直接在屏幕上呈现的内容,并且可以接受用户的输入事件,包括触摸,加速度计和键盘输入等。我们需要在层中加入精灵,文本标签或者其他游戏元素,并设置游戏元素的属性,比如位置,方向和大小;设置游戏元素的动作等。 (注: 场景也可以直接在屏幕上显示内容哦)
精灵:
Cocos2d中的精灵和其他游戏引擎中的精灵相似,它可以移动,旋转,缩放,执行动画,并接受其他转换。Cocos2dx的Sprite由Texure,frame和animation组成,由openes负责渲染。主要的类关系如下: 简单过程可描述为:使用Texture2D加载图片,可以用Texture2D生成对应的SpriteFrame(精灵帧),将SpriteFrame添加到Animation生成动画数据,用Animation生成Animate(就是最终的动画动作),最后用Sprite执行这个动作。
创建精灵的三种方法:
1、直接创建精灵。
1 auto sprite = Sprite::create("helloworld.png"); 2 this->addChild(sprite, 0);
2、 使用纹理创建精灵。
1 auto sprite = Sprite::createWithTexture(TextureCache::getInstance()->addImage("helloworld.png"); 2 this->addChild(sprite, 0);
3、使用精灵帧来创建精灵。
1 auto sprite = Sprite::createWithSpriteFrameName("helloworld.png"); 2 this->addChild(sprite, 0);
第一篇Cocos的文章,先引个场,后面继续笔记下去,虽然一篇blog的时间比较长,但为以后服务更加方便。
标签:
原文地址:http://www.cnblogs.com/liujianli405/p/4264116.html