随笔分类 - Cocos2d-x
摘要:手机游戏的开发中,控制内存是一个很重要的课题。由于机型之间的性能存在差异,很多时候需要处理内存方面的优化。一方面是代码中的优化,另一方面是图片渲染等方面的优化。 1、内存管理原则: Cocos2D-x采用c++语言进行开发,C++中的对象采用new/delete机制进行管理,即当创建一个对象的时候,调用new来申请一部分内存,当不需要这个对象的时候,直接调用delete就可以释放这部分内存。这样处理的好处是程序可以完全掌握内存管理的方方面面,缺点是程序员有时会忘记释放内存,就会发生内存泄露,导致不可预计的后果。 Cocos2D-x采用引用计数的方式管理内存,基本原则是当创建一个新对象...
        阅读全文
            
摘要:游戏中的存档功能可以保证玩家在游戏过程中有足够的延续性,这点在单机游戏开发中尤为重要。Cocos2D-x中支持的游戏存档类CCUserDefault可以作为一个轻量化的数据库来使用。它支持存储的数据类型包括bool(布尔型)、int(整型)、float(浮点型)、double(双精度浮点型)、string(字符串型)。 CCUserDefault类的主要成员函数如下: getBoolForKey:根据传入的键值参数返回相应的布尔值,第二个参数为可选的默认值,一旦该键值的值不存在,将返回默认值。 getIntegerForKey:根据传入的键值参数返回相应的整型值,第二个参数为可选的默...
        阅读全文
            
摘要:Cocos2D-x中采用SimpleAudioEngine类来实现跨平台的声音引擎。 1、Cocos2D-x在不同平台下支持的背景音乐格式如下: android:android.media.MediaPlayer类支持的格式,包括MP3、WAV和3GP。 IOS:Cocos2D-iPhone中CocosDenshion支持的类型,推荐MP3和CAF。 Win32:MID和WAV。 2、Cocos2D-x在不同平台下支持的音效格式如下: android:对于OGG格式支持最好,同时支持WAV格式。 IOS:Cocos2D-iPhone中CocosDenshion支持的类型、推荐...
        阅读全文
            
摘要:滚动列表类CCListView是Cocos2D-x2.0及更高版本新增加的一个类。它继承与颜色布景层类CCLayerColor,继承关系如下: CCListView、CCListViewCell->CCLayerColor。 CCListView类作为一个容器,它装载的CCListViewCell列表单元同样继承自颜色布景层类CCLayerColor。另外CCListViewDelegate用来处理滚动列表的代理事件。 1、CCListView类的主要成员函数如下: initWithMode:参数传入,CCListViewModeHorizontal列表是水平的,CCListVie...
        阅读全文
            
摘要:在游戏中,有时需要用户输入用户名、密码等,这时需要调用虚拟键盘来实现。在Cocos2D-x中,通过使用继承输入法代理类CCIMEDelegate和其字体标签类CCLabelTTF的子类输入框类CCTextFieldTTF来实现虚拟键盘输入功能。继承关系如下: CCTextFieldTTF->CCLabelTTF、CCIMEDelegate。 可以看出CCTextFieldTTF类分别继承自CCIMEDelegate类和CCLabel类,这就决定了它既是标签化的输入框,又是可输入字符的标签。 1、CCIMEDelegate类的主要成员函数如下: attachWithIME:打开键盘并...
        阅读全文
            
摘要:使用IOS系统的设备中只有Home键,按下Home键,程序进入后台。而使用Android系统的部分设备会有Menu键和返回键,因此有时需要检测设备的键盘输入,使用键盘事件代理CCKeypadDelegate处理相应的事件。CCKeypadDelegate类的继承关系如下: CClayer->CCkeypadDelegate。 主要的成员函数如下: keyBackClicked:返回按钮按下时调用。 keyMenuClicked:Menu键按下时调用。 按键事件的使用示例如下: 1 //要在CCLayer类中获得按键事件的数据,首先要在初始化函数中加入允许接收按键事件的函数。 2 ...
        阅读全文
            
摘要:智能手机的游戏与应用中,也经常会用到加速度传感器事件来丰富用户的操作,比如赛车游戏中摇动手机控制前进方向、动作过关游戏中通过加速度传感器来控制角色的移动和跳跃方向等。Cocos2D-x中使用加速度传感器代理CCAccelerometerDelegate提供的方法来接收加速度传感器的数值变化,继承关系如下: CCLayer-->CCAccelerometerDelegate。 布景层类CCLayer和其子类继承自CCAccelerometerDelegate类,因此布景层类和其子类可以使用获得加速度传感器的方法。 CCAccelerometerDelegate类的主要成员函数: di...
        阅读全文
            
摘要:在智能手机中,触屏操作占有很重要的位置,尤其是多点触摸技术的兴起,使得触屏操作在游戏中更广泛的使用,使操作方式更加丰富。在Cocos2D-x中,继承自触屏代理协议CCTouchDelegate的布景层类CCLayer可以检测触屏事件并调用回调函数。CCTouchDelegate类的继承关系如下: CCLayer、CCStandardTouchDelegate、CCTargetedTouchDelegate-->CCTouchDelegate。 CCTouchDelegate的子类中,CCStandardTouchDelegate协议是标准的获得多点触摸点的范例,CCTargetedTo.
        阅读全文
            
摘要:本节学习和动画类CCAnimate相关的类,比如:CCAnimationCache类、CCAnimationFrame类、CCAnimation类等。下面我们就来一一学习: 1、动画缓存类CCAnimationCache:是一个单例,用于缓存所有的动画和动画帧,使用示例如下:1 //获得动画缓存类CCAnimationCache2 CCAnimationCache* animCache = CCAnimationCache::shareAnimationCache();3 //通过addAnimation函数加入动画,并给动画命名。4 animCache->addAnimation( a
        阅读全文
            
摘要:网格动作类似于特效,可以实现翻转、抖动、震荡、水波纹等效果。Cocos2D-x中,网格类的基类CCGridBase有两个子类,即CCGrid3D和CCTiledGrid3D。这两个类的共同点是,网格的每个子块都可以分离出来,CCGridBase的继承关系如下: CCGrid3D、CCTiledGrid3D-->CCGridBase-->CCObject。 网格没有什么直接应用的场合,只要明白CCGrid3D和CCTiledGrid3D,并且网格动作是基于网格的即可。运行网格动作的节点好像被分成了大小相同的很多矩形,通过这些矩形的动作形成整体动作,这些矩形就好像形成了一个矩阵。16x
        阅读全文
            
摘要:动作管理类CCActionManager是一个管理所有动作的单例,工作原理是:当CCNode执行runAction时,该函数会把动作通过动作管理类的addAction函数将对象传递给CCActionManager的单例,该实例再把这个动作添加到自己的动作序列中。 动作管理类单例通过定时刷新自己的update方法,在这个方法中去调用行为序列中每个动作的step(暂停的行为不会update),这些step方法在根据自身的完成进度去update或是结束行为。 实际上是由动作管理单例驱动的每个动作去更新自己的逻辑,而runAction方法只是将行为对象添加进CCActionManager的待执...
        阅读全文
            
摘要:在游戏中,游戏对象有时不是执行一个动作,有时是多个动作的动作序列,有时是同时执行几个动作序列。这时候就需要使用组合动作的方式将多个动作或按序列组织,或合成在一起。下面我们就来看一下几个比较常用的动作组合类: 1、CCSequence:动作序列,可以使用动作的CCArray数组,也可以把所有的动作作为参数传入create函数中,最后结尾参数使用NULL(空值)即可,还可以把两个有限时间动作按顺序传入create函数中。使用代码如下:1 CCFiniteTimeAction* seq = CCSequence::create(action1, action2, action3, action...
        阅读全文
            
摘要:在实现运动中,常常需要实现一些加速度或者减速度的效果。Cocos2D-x引擎为我们提供了相应的实现接口,这样就不用再用原来的公式计算方法实现加减速度的效果。 Ease系列的方法改变了运动的速度,但是并没有改变总体时间。如果整个动作持续5s,那么整个时间仍然会持续5s。这些动作可以分成三类,如下: 1、In actions:action(开始的时候加速) 2、Out actions:action(结束的时候加速) 3、InOut actions:action(开始和结束的时候加速) CCActionEase有很多子类,根据不同的缓冲公式来模拟加减速过程,如下: 1、指数缓冲:分别...
        阅读全文
            
摘要:CCAction的子类CCFiniteTimeAction分为瞬时动作(CCActionInstant)和延时动作(CCActionInterval),其中瞬时动作的子类如下: CCCallFunc:执行回调函数。 CCFilpX:x轴镜像翻转。 CCFilpY:y轴镜像翻转。 CCHide:隐藏。 CCPlace:设置位置。 CCReuseGrid:重用网络。 CCShow:显示。 CCStopGrid:停止网格。 CCToggleVisibility:可见切换。 瞬时动作,顾名思义,就是直接调用结果的动作,这中间不产生任何动画效果。 延时动作(CCAction...
        阅读全文
            
摘要:Cocos2D-x的动作类CCAction并不是一个在屏幕中显示的对象,动作必须要依托于CCNode类及它的子类的实例才能发挥作用。Cocos2D-x的动作包括位置移动、跳跃,甚至是对象颜色的渐变等。CCAction类的继承关系如下: CCFiniteTimeAction、CCFollow、CCSpeed-->CCAction-->CCObject。 CCAction类继承于对象类CCObject,有三个子类:有限时间动作(CCFiniteTimeAction类)、跟随(CCFollow类)、移动速度(CCSpeed)。其中有限时间动作分为瞬时动作(CCActionInstant)
        阅读全文
            
摘要:在游戏中,时常需要隔一段时间更新一些数据或者是人物位置,Cocosd-x提供了一个很好的功能给我们使用,那就是schedule,它是什么东西?我们可以简单地认为它是定时器(时间调度),是单线程的定时器,所有CCNode 类的子类都有这样的函数。使用示例如下: 1 //schedule_selector 选择器将调用函数名称传进来。第二个参数是时间间隔 2 schedule(schedule_selector(调用函数), 0.5f); 3 4 //定义上面函数以后就会隔一段时间调用一次该函数,直到unschedule 被调用。这句被调用,之前schedule 的时间调度将结束。 5 un...
        阅读全文
            
摘要:在节点类CCNode 中, 可以重写draw 函数并在其中绘制图形。下面就来介绍一下几个常用的图形绘制。 1、绘制直线: 1 //参数分别为直线的起点和终点。默认绘制的直线是白色的、不透明的、线宽是1 并且是抗锯齿的。 2 ccDrawLine( ccp(0, 0), ccp(s.width, s.height) ); 3 4 //设置线宽 5 glLineWidth( 5.0f ); 6 //设置颜色 7 ccDrawColor4B(255,0,0,255); 8 ccDrawLine( ccp(0, s.height), ccp(s.width, 0) ); 9 10 //注意:O...
        阅读全文
            
摘要:在游戏的实现过程中,有时会需要在某个游戏对象上的运动轨迹上实现渐隐效果。这种感觉就好像是类似飞机拉线的拖尾巴,在视觉上感觉很好,比如子弹的运动轨迹等,如果不借助引擎的帮助,这种效果往往需要通过大量的图片来实现。而Cocos2D-x 提供了一种内置的拖动渐隐效果类CCMotionStreak 来帮助我们实现这个效果。它是CCNode 类的子类,继承关系如下: CCMotionStreak-->CCNode、CCTextureProtocol、CCRGBAProtocol。 主要成员函数如下: initWithFade:第一个参数是间隐的时间,第二个参数是间隐片断的大小,第三个参数是贴图..
        阅读全文
            
摘要:1、CCArray: 数组容器,每个对象的类型可以不相同。主要的成员函数如下: init:初始化。 initWithObject:初始化,参数为对象。 initWithObjects:初始化,参数为多个对象。 initWithCapacity:初始化,参数为个数。 initWithArray:初始化,参数为数组。 count:目前对象个数。 capacity:数组对象。 indexOfObject:获得相应对象的索引。 objectAtIndex:根据索引获得对象。 lastObject:返回最后一个对象。 randomObject:随机返回一个对象。 addObj...
        阅读全文
            
摘要:在游戏中,文字占有很重要的位置,游戏的介绍、游戏中的提示和对话等都需要用到文字。Cocos2d-x在文字渲染方面提供了非常灵活的机制,既可以直接使用系统字,也可以自渲染字体,文本渲染类的继承关系如下: CCLabelAtlas、CCLabelBMFont、CCLabelTTF-->CCLabelProtocol。 CCTextFieldTTF-->CCLabelTTF。 1、CCLabelAtlas类 CCLabelAtlas类是使用图片作为文字的一种方式,该类可以通过图片直接定义。使用示例如下: 1 //创建CCLabelAtlas实例,参数:要显示的文字字符串、图片路径、字符.
        阅读全文
            
 
                    
                 浙公网安备 33010602011771号
浙公网安备 33010602011771号