在执行某个行为动作的时候,有时候根据需求,可能需要暂停一段时间,然后继续执行,这个时候我们可以用到,CCDelayTime这个类,它是CCActionInterval的派生类。好,现在我们来看一下如何创建一个延时的行为动作,代码如下:void MyActionCCDelayTimeLayer::initLayer() { CCSize size = CCDirector::shar
我们一般在做某个一个Action的时候,我们需要返回会用到该sprite的reverse,但是又时候,我需要这种行为再reverse的时候,我就可以利用CCReverseTime达到这种效果,例子代码如下: CCSprite *spriteTint = CCSprite::create("blocks.png"); spriteTint->setPosition(ccp(size
为了搞懂这个两个到底是咋回事,花费了我一天的功夫,没有办法,我人很笨的,在网上找了好多资料都没有找到关于吞噬触屏,也就是在一个Scene下,多个layer直接如何进行消息的传递和吞噬的。好了,废话不多说,先来了解这个两个"禽兽"吧!CCTouchTargetedDelegate,属于单点触屏,CCTouchStandardDelegate,属于多点触屏我们在实现自己的触屏的时候,需
,这篇文章写得很详细,我在此基础上写了个例子,代码如下: void MyActionBezierLayer::initLayer() { CCSize size = CCDirector::sharedDirector()->getWinSize(); CCSprite *pSpriteMove = CCSprite::create("face.jpg"); pS
如果我们需要将两个不同的动作组合到一起,那我们就用CCSpawn,等下讲一下它和CCSequence的区别: CCSprite *spriteSpaw = CCSprite::create("leftNormal.jpg"); spriteSpaw->setPosition(ccp(size.width / 2.0f, size.height / 2.0f)); th
基于曲线移动到相应位置,例子代码如下:void MyActionCardinalSplineLayer::initLayer() { CCSize size = CCDirector::sharedDirector()->getWinSize(); CCSprite *sprite = CCSprite::create("blocks.png"); sprite->se
CCTargetedAction,改变当前执行的sprite,例子代码如下:void MyActionTargetedLayer::initLayer() { CCSize size = CCDirector::sharedDirector()->getWinSize(); CCSprite *sprite = CCSprite::create("blocks.png");
CCAccelerometerDelegate的消息处理机制与win32的消息处理机制一样的,由于篇幅太长,我就不详细解答,CCAccelerMeterDelegate例子代码如下:void MyAcceleroMeterLayerTest::initLayer() { CCSize size = CCDirector::sharedDirector()->getWinSize()
上一篇文章是用到CCTextFieldTTF来创建的一个输入框,现在我们用CCEditBox来创建一个输入框,它是在2.0版本后加入的,好了,看例子吧: CCEditBox *m_InputBox;定义一个editbox; void MyEditBoxLayer::initLayer() { CCSize size = CCDirector::sharedDirecto
有时候我们需要做一些特殊的效果,比如子弹爆炸的效果,当然我们用动画也可以做出来,但是有时候发现利用粒子的效果去代替它会跟好看,我们先来看下粒子代码:void ParticleDemoLayer::initLayer() { CCSize size = CCDirector::sharedDirector()->getWinSize(); m_pParticleWorld =
Cocos2d-x的设计允许我们在游戏的任何部分自由地使用OpenGL,这为我们带来了无与伦比的灵活性,但同时也必须注意,滥用OpenGL会使得代码变得混乱而难以维护,因此除非迫不得已,不应首先考虑OpenGL。引擎封装了一个特殊的动作类CCActionGrid3D,可以模拟一些简单的3D特效,在一些情况下可以代替OpenGL。恰好引擎利用CCActionGrid3D提供了一个类似于我
在cocos2dx中,我们需要不断地去更新某个动作,我们可以用:scheduleUpdate,但是这个时候我们需要重写CCObject中的update方法,初始化scheduleUpdate有两种方法:1,可以在自己的init方法中初始化它。2,可在onEnter中初始化它,但是一定要CCLayer::onEnter()否则执行不到你的update当然,你还可以利用回调
无论如何复杂的游戏场景也都是精灵通过不同的层次、位置组合构成的,因此只要可以把精灵按照前后层次,在不同的位置绘制出来就完成了游戏场景的绘制。(这里仅考虑由精灵构成的简单游戏,复杂的游戏也许会包含其他游戏元素,但是原理上并不冲突。)在第3章学习游戏元素时,我们曾接触过Cocos2d-x的渲染树结构,渲染树是由各种游戏元素按照层次关系构成的树结构,它展示了Cocos2d-x游戏的绘制层次,因此游戏的渲
Cocos2Dx中本来没有物理引擎的,Box2D、Chipmunk这两个物理添加入cocos2dx中,为了模拟出更好的真实游戏世界,好了,看代码例子吧:typedef enum { SPRITEBATCHNODE_TAG = 1,} BatchNodeTag;MyChipmunkAccelSprite::MyChipmunkAccelSprite() {}void MyCh
我们在进入layer的时候,首先如果使用默认的方法(LAYER_CREATE_FUNC)初始化,那么它就会进入init,这个方法你可以初始化你的layer和一些sprites,如果你想自己重写layer的onEnter/onExit的话,那么务必请注意,你要在你的onEnter/onExit里面写上基类的Base::onEnter、Base::onExit,否则的话,程序会收不到消息的。举
CCFlipX,CCFlipY这两个类都是继承了CCActionInstance,分别是围绕X,Y轴进行旋转,例子代码: CCSprite *sprite1 = CCSprite::create(); sprite1->initWithTexture(texture2d); sprite1->setAnchorPoint(ccp(0.5f, 0.5f));
在粒子效果中,通常存在一个对所有粒子进行统一调度的引擎,称作粒子系统(partical system),它负责粒子的产生,随时间改变粒子的状态,以及最后回收不再需要的粒子。如果按照粒子系统的维数来区分,粒子系统可以分为二维粒子系统与三维粒子系统两种。 Cocos2d-x为我们提供的粒子系统由CCParticleSystem类实现。与其他的粒子引擎一样,CCParticleSystem实现了对粒
/** CC_PROPERTY_READONLY is used to declare a protected variable. We can use getter to read the variable. @param varType : the type of variable. @param varName : variable name. @param funName : "g
CCImage在"CCImage.h"中定义,表示一张加载到内存的纹理图片。在其内部的实现中,纹理以每个像素的颜色值保存在内存之中。CCImage通常作为文件和显卡间数据交换的一个工具,因此主要提供了两个方面的功能:一方面是文件的加载与保存,另一方面是内存缓冲区的读写。我们可以使用CCImage轻松地读写图片文件。目前,CCImage支持PNG、JPEG和TIFF三种主流的图片格式。下面列举与
CCSpeed用于线性地改变某个动作的速度,因此,可以实现成倍地快放或慢放功能。为了改变一个动作的速度,首先需要将目标动作包装到CCSpeed动作中:看个例子代码: CCSpriteFrameCache *cache = CCSpriteFrameCache::sharedSpriteFrameCache(); cache->addSpriteFram
值得一提的是文字输入。正如鼠标对键盘的颠覆,从iPhone开始的触摸屏革命已然将实体键盘逼入了一个尴尬的位置,更多的交互通过触摸屏上直观的手势操作完成,但是文字输入依然是必不可少的,例如当我们需要设定用户名的时候。 在没有实体键盘的触屏手机上,文字输入通过虚拟键盘来实现。不幸的是,CCLayer并没有为我们提供一个简化的封装实现;而幸运的是,在Cocos2d-x中已经存在一个现成的文本框控件
遮罩层,其实就是一个layer,一个只显示出你自定义显示的layer。在瞄准线中我们用了引擎封装的快捷绘图,熟悉了自定义绘图的基本流程。对于稍复杂的绘图效果,就需要调用底层的OpenGL接口了,这里我们用一个小小的例子来说明:滚动的数字表盘,在游戏中显示倒计时。在这个例子中,我们将使用OpenGL提供的遮罩效果来快速实现这一效果。 遮罩效果又称为剪刀效果,允许一切的渲染结果只在屏幕的一个
引擎提供了CCGLProgram类来处理着色器相关操作,对当前绘图程序进行了封装,其中使用频率最高的应该是获取着色器程序的接口:const GLuint getProgram();该接口返回了当前着色器程序的标识符。后面将会看到,在操作OpenGL的时候,我们常常需要针对不同的着色器程序作设置。注意,这里返回的是一个无符号整型的标识符,而不是一个指针或结构引用,这是OpenGL接口的一个风格。
它是直接利用CCApplication中的getCurrentLanguage获得当前输入法,直接看例子吧: ccLanguageType currentLanguageType = CCApplication::sharedApplication()->getCurrentLanguage();提供了如下语言:typedef enum LanguageType{ kLang
Box2D是与Cocos2d-x一起发布的一套开源物理引擎,也是Cocos2d-x游戏需要使用物理引擎时的首选。二者同样提供C++开发接口,所使用的坐标系也一致,因此Box2D与Cocos2d-x几乎可以做到无缝对接。Box2D是一套基于刚体模拟的物理引擎,它的核心概念为世界、物体、形状、约束和关节.void MyBox2DLayer::initLayer() { CCSi
#define CC_SAFE_DELETE(p) do { if(p) { delete (p); (p) = 0; } } while(0)#define CC_SAFE_DELETE_ARRAY(p) do { if(p) { delete[] (p); (p) = 0; } } while(0)#define CC_SAFE_FREE(p)
它的公式:点击打开链接
Copyright © 2005-2024 51CTO.COM 版权所有 京ICP证060544号