学习随笔

cocos2d-x引擎3.0文档链接:http://www.cocos.com/doc/cocos2d-x-3.0/files.html

 

2章知识要点:

在处理与代码相关的文件名时,应避免使用空格和特殊字符。尤其是资源名称还要避免使用大写,因为Android工程不区分大小写。对于开发者使用的文件名,只有数字,减号和下划线是最安全的。

 

 

IOS加载应用程序的时候会使用“Default.png”,“Icon.png”则用作应用程序的图标

 

预编译前缀头文件,xx.pch”头文件的作用是给编译过程加速。应该把不常变化得头文件添加到这个文件中,在编译的时候,这些头文件会被预先编译,所有的类都将可以使用这些头文件,缺点是,如果前缀头文件里其中一个头文件发生了变化,所有代码将会重新编译。

 

SetAnimationInterval:1.0/60.设置动画间隔,此设置影响游戏可以达到的最大帧率。不过动画间隔并不等于多少帧每秒,它表示的是cocos2d更新屏幕的频率,这时在两次屏幕更新之间的时间间隔。这个值并不是越高越好,对于一些复杂的游戏,设置一个低一点的帧率,游戏可以更稳定,保持这个帧率,用户的体验会比使用一个高一些但不稳定的帧率要好的多。

 

setDisplayFPS:YES;显示帧率。修改ccConfig.h文件中的CC_DIRECTOR_FPS_INTERVAL可以调节FPS显示的反应速度,默认是0.1,表示每秒会刷新10次。

 

Cocos2d使用了多层级的CCNode对象来决定在什么地方显示什么内容。所有的节点的基类都是CCNode类,它包含了位置信息,但没有显示信息。它是所有其他节点类的父类,

CCScene是一个抽象的概念,它的功能是根据像素坐标把物体放置在场景里相应的地方。

CCLayer类本身并不做什么,它的功能是允许触摸和加速计的输入

 

3章知识要点:

单例模式,单例就是在整个程序生命周期中只会被实例化一次的特殊类。单例的优点是它可以在任何时间任何地点被任何类调用,它接近于全局类的作用.缺点是有可能被错误的使用,且单例越大越消耗资源.一般都是通过以下方法实现的。

Static Savemanager *shareManager = null;

Savemanager* shareManager

{

If(shareManager == NULL){

ShareManager = new Savemanager();

}

Return shareManager;

}

 

CCDirector类,是cocos2d游戏引擎的核心。是一个单例,保存着coocs2d的全局配置设定,管理者cocos2d的场景。

CCDirector的主要作用有:

  1. 访问和改变场景。
  2. 访问cococ2d的配置细节。
  3. 访问视图(OpenGLUIViewUIWindow);
  4. 暂停,恢复和结束游戏。
  5. UIKitOpenGL之间转换坐标。

 

场景转换的方法:(都是来至CCDirector类)

  1. runWithScene。开始运行第一个场景。
  2. replaceScene。把当前场景的内存释放掉,加载新的场景。这个方法会在替换场景时,使内存使用量短时间内忽然增大,所以在使用是要特别注意场景替换时是否有内存泄露。

在创建场景的CCLayerdealloc方法中添加输出语句,如果在场景切换时这个输出语句没有输出说明你的整个CCScene都存在内存泄露。应该相信cocos2d的内存管理,在游戏尽量都使用cocos2d的内存管理,不要使用单独的内存管理语句。

 

  1. PushingPopping场景方法。

他们的作用是在不从内存里移除旧场景的情况下运行新 的场景,目的是让转换场景的速度更快。但这是在你的场景很简单时,同时互相分享内存,那么他们本身的加载速度就会很快。而如果你的场景很复杂,需要消耗很长时间去加载,那么他们就会互相争抢宝贵的内存,导致内存使用量迅速上升。

pushScenepopScene最大的问题是可以互相叠加,且这些场景都共享着同一块内存。也就是说你push一个场景,然后继续push一个场景。不便于管理。

不过如果你要在很多地方使用一个通用的场景,例如游戏设置。你可以push进入设置场景,设置场景的返回按钮则调用popScene让游戏回到原来的场景。这个场景要尽量简单,减少内存的消耗。

 

 

场景过渡效果:(都继承自CCTransitionScene),在游戏里不是每个过渡效果都很有用,即使它们看起来很好看,玩家最关心的是过渡的速度,所以设置过渡效果的时间最好不要超过1秒,或者完全不要使用过渡效果。过渡效果可以和replaceScenepushScene结合使用,但不能喝popScene一起使用。还有过渡效果显示时旧的场景还没释放,新的场景已经加载,这对内存使用会有很大的压力,一定要注意这点。

 

一个场景中可以有多个层CCLayer,使用多个层并不会降低运行效率,但如果你的层都接收触摸或者加速计事件,因为接收处理外来事件很耗费资源,所以不应该使用很多接收外来事件的层,而是只使用一个层来接收和处理事件,其他层不接收和处理事件,如果需要的话,也应该由接收和处理事件的层通过转发事件的方式来通知其他层。

 

CCLabel,用于显示文字,

 

CCMenu,?

4章知识要点:

“保持弱引用“:不保留对象而由另一个类或对象来管理它的内存使用。

 

在设置精灵位置时,任何时候都应该避免使用固定的位置,

 

Update中,每一帧都会被调用。因为有些手机的CPU不支持直接在硬件上做除法操作,做除法会降低速度和消耗更多的资源,所以所有代码必须尽量少使用除法,而是使用等值的乘法运算。

 

5章知识要点:

 

LoadingScene用于过于复杂的场景切换时做为过渡场景,所以要尽量简单,少使用内存。

当两个较复杂的场景进行切换是,内存的使用量是两者的和,这对内存是很大的压力。而且花费的时间比较多。使用过渡场景,可以避免

这个问题。当然这是对两个复杂的场景是很有用的。其他情况下,请不要使用过渡场景。

 

永远不要在一个节点的init方法中调用CCDirectorreplaceScene方法,否则会引起程序崩溃。

posted @ 2016-11-20 19:46  梦幻轮回  阅读(286)  评论(0编辑  收藏  举报