cocos2dx之积累点滴(一)

      本人的习惯,在学习时一支笔、一个记事本伴随其身,记录下思路,应该这就是屌丝的气息,用不惯高大上的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类提供了常见的操作场景的方法:

  • runWithScene( Scene *scene ) 启动游戏,并运行scene场景。本方法在主程序第一次启动主场景的时候调用。如果已有正在运行的场景则不能调用该方法;会调用pushScene-->startAnimation。
  • pushScene( Scene *scene ) 将当前运行中的场景暂停并压入到代码执行场景栈中,再将传入的scene设置为当前运行场景,只有存在正在运行的场景时才调用该方法;
  • replaceScene( Scene *scene ) 直接使用传入的scene替换当前场景来切换画面,当前场景被释放。这是切换场景时最常用的方法。
  • popScene() 释放当前场景,再从代码执行场景中弹出栈顶的场景,并将其设置为当前运行场景。如果栈为空,直接结束应用。和PushScene结对使用
  • end() 释放和终止执行场景,同时退出应用
  • pause() 暂停当前运行场景中的所有计时器和动作,场景仍然会显示在屏幕上
  • resume () 恢复当前运行场景的所有计时器和动作,场景仍然会显示在屏幕上

 

层:

  Layer是处理玩家事件响应的Node子类。与场景不同,层通常包含的是直接在屏幕上呈现的内容,并且可以接受用户的输入事件,包括触摸,加速度计和键盘输入等。层可以包含任何Node作为子节点,包括Sprites(精灵), Labels(标签),甚至其他的Layer对象。并设置游戏元素的属性,比如位置,方向和大小;设置游戏元素的动作等。 (注: 场景也可以直接在屏幕上显示内容哦,但是一般不直接在场景中显示内容)

 

精灵:

  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的时间比较长,但为以后服务更加方便。

 

转载于:https://www.cnblogs.com/liujianli405/p/4264116.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值