自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

专注,努力,勤奋

专注,努力,勤奋

  • 博客(32)
  • 资源 (3)
  • 收藏
  • 关注

原创 cocos2dx之遮罩层

遮罩层,其实就是一个layer,一个只显示出你自定义显示的layer。在瞄准线中我们用了引擎封装的快捷绘图,熟悉了自定义绘图的基本流程。对于稍复杂的绘图效果,就需要调用底层的OpenGL接口了,这里我们用一个小小的例子来说明:滚动的数字表盘,在游戏中显示倒计时。在这个例子中,我们将使用OpenGL提供的遮罩效果来快速实现这一效果。 遮罩效果又称为剪刀效果,允许一切的渲染结果只在屏幕的一个

2014-01-22 15:28:52 10114 2

原创 cocos2dx之坐标变换

在绘制渲染树中,最关键的步骤之一就是进行坐标系的变换。没有坐标系的变换,则无法在正确的位置绘制出纹理。同时,坐标系的变换在其他的场合(例如碰撞检测中)也起着十分重要的作用。因此在这一节中,我们将介绍Cocos2d-x中的坐标变换功能。首先,我们来看一下transform方法,其代码如下所示:void CCNode::transform(){ kmMat4

2014-01-21 14:45:36 4426

原创 cocos2dx之渲染树的绘制

无论如何复杂的游戏场景也都是精灵通过不同的层次、位置组合构成的,因此只要可以把精灵按照前后层次,在不同的位置绘制出来就完成了游戏场景的绘制。(这里仅考虑由精灵构成的简单游戏,复杂的游戏也许会包含其他游戏元素,但是原理上并不冲突。)在第3章学习游戏元素时,我们曾接触过Cocos2d-x的渲染树结构,渲染树是由各种游戏元素按照层次关系构成的树结构,它展示了Cocos2d-x游戏的绘制层次,因此游戏的渲

2014-01-21 14:04:15 6978

原创 cocos2dx之OpenGl绘图

随着OpenGL的发展,其提供的绘图函数也变得多种多样。对于同一个效果来说,常常有多种不同的实现方法,因此想要在此对OpenGL的绘图函数进行全方位的介绍是不可能的,这里我们只简单介绍Cocos2d-x中常用的绘图函数。例子代码: void draw() { static CCSize winSize = CCDirector::sharedDirector(

2014-01-21 11:50:33 6794

原创 cocos2dx之瓦片地图

瓦片地图就是为了解决前面提到的问题而产生的。一张大的世界地图或背景图片往往可以由屈指可数的几种地形来表示,每种地形对应于一张小的图片,我们称这些小的地形图片为瓦片。把这些瓦片拼接在一起,一个完整的地图就组合出来了,这就是瓦片地图的原理。在Cocos2d-x中,瓦片地图实现的是TileMap方案,TileMap要求每个瓦片占据地图上一个四边形或六边形的区域。把不同的瓦片拼接在一起,就可以组成一个

2014-01-20 16:41:53 6262

原创 cocos2dx之粒子系统

在粒子效果中,通常存在一个对所有粒子进行统一调度的引擎,称作粒子系统(partical system),它负责粒子的产生,随时间改变粒子的状态,以及最后回收不再需要的粒子。如果按照粒子系统的维数来区分,粒子系统可以分为二维粒子系统与三维粒子系统两种。 Cocos2d-x为我们提供的粒子系统由CCParticleSystem类实现。与其他的粒子引擎一样,CCParticleSystem实现了对粒

2014-01-20 14:43:29 6119

原创 cocos2dx之文字输入

值得一提的是文字输入。正如鼠标对键盘的颠覆,从iPhone开始的触摸屏革命已然将实体键盘逼入了一个尴尬的位置,更多的交互通过触摸屏上直观的手势操作完成,但是文字输入依然是必不可少的,例如当我们需要设定用户名的时候。 在没有实体键盘的触屏手机上,文字输入通过虚拟键盘来实现。不幸的是,CCLayer并没有为我们提供一个简化的封装实现;而幸运的是,在Cocos2d-x中已经存在一个现成的文本框控件

2014-01-20 10:41:42 7162 1

原创 cocos2dx之加速器

除了触摸,移动设备上一个很重要的输入来源是设备的方向,因此大多数设备都配备了加速度计,用于测量设备静止或匀速运动时所受到的重力方向。 目前,加速度计在传统PC平台上尚未提供支持,因此在正式开始探索重力感应之前,还请读者参考附录A,将Cocos2d-x工程部署到手机或其他移动设备上。现在,Android或iOS平台均支持加速度计。 重力感应来自于移动设备的加速度计,通常支持X、Y和Z三个方向

2014-01-20 10:17:40 3802

原创 cocos2dx之触摸事件

两种Cocos2d-x触摸事件:1,我们已经见到了CCLayer处理触摸事件的方法。当我们开启CCLayer的TouchEnable属性后,层中的4个回调函数就会在接收到事件时被触发,我们把这类事件称作标准触摸(standard touch)事件,它的特点是任何层都会平等地接收全部触摸事件。2,除此以外,Cocos2d-x还提供了另一种被称作带目标的触摸事件(targeted touc

2014-01-17 11:38:10 10538

原创 cocos2dx之音效引擎

在游戏中,我们把声音分为两类。第一类是音乐,这种类型的声音通常长度较长,适合作为环境音乐(例如游戏的背景音乐)。由于它的长度较长,同一时刻通常只能播放一首音乐。第二类是音效,它的特点是长度很短,但是可以同时播放多个音效,拥有很强的表现力。在游戏开发中,我们可以十分方便地启用CocosDenshion音效引擎库。CocosDenshion位于Cocos2d-x目录下的"CocosDenshion

2014-01-17 10:38:33 26890 6

原创 cocos2dx之场景特效

CCTransitionScene派生自CCScene,换句话说,场景特效本身也是一个场景。讲到这里,聪明的读者也许已经想到了,场景特效的实现方式与复合动作类似:复合动作是一类特殊的动作,它们包含其他动作,执行复合动作时,被包含的动作也会按照一定的方式执行;而场景特效是一类特殊的场景,它们包含了另一个场景,在运行场景特效时,被包含的原场景会以添加了特效的方式显示出来。因此,特效场景的使用方法

2014-01-17 00:57:05 2886

原创 cocos2dx之弧度和角度的互换

在cocos2dx中,提供了两个宏进行弧度和角度的互换(ccMacros.h):#define CC_DEGREES_TO_RADIANS(__ANGLE__) ((__ANGLE__) * 0.01745329252f) // PI / 180/** @def CC_RADIANS_TO_DEGREES converts radians to degrees */#define C

2014-01-16 11:55:25 9221

原创 cocos2dx之CCActionEase,CCEaseExponentialIn等变速Action

虽然使用CCSpeed能够改变动作的速度,然而它只能按比例改变目标动作的速度。如果我们要实现动作由快到慢、速度随时间改变的变速运动,需要不停地修改它的speed属性才能实现,显然这是一个很烦琐的方法。下面将要介绍的CCActionEase系列动作通过使用内置的多种自动速度变化来解决这一问题。CCActionEase系列包含15个动作,它们可以被概括为5类动作:指数缓冲、Sine缓冲、弹性缓冲、跳跃

2014-01-16 11:28:02 12473

原创 cocos2dx之CCSpeed

CCSpeed用于线性地改变某个动作的速度,因此,可以实现成倍地快放或慢放功能。为了改变一个动作的速度,首先需要将目标动作包装到CCSpeed动作中:看个例子代码: CCSpriteFrameCache *cache = CCSpriteFrameCache::sharedSpriteFrameCache(); cache->addSpriteFram

2014-01-16 11:06:46 5095

原创 cocos2dx之CCCallFunc,CCCallFuncN,CCCallFuncND,CCCallFuncO

在CCCallFunc系列动作的4个类中,CCCallFunc调用的方法不包含参数,CCCallFuncN调用的方法包含一个CCNode*类型的参数,表示执行动作的对象。CCCallFuncND调用的方法包含两个参数,不仅有一个节点参数,还有一个自定义参数(CCNode*与void*)。CCCallFuncO调用的方法则只包含一个CCObject*类型的参数。实际上,CCCallFunc系列动

2014-01-15 16:22:14 3577 4

原创 cocos2dx之CCFlipX,CCFlipY

CCFlipX,CCFlipY这两个类都是继承了CCActionInstance,分别是围绕X,Y轴进行旋转,例子代码: CCSprite *sprite1 = CCSprite::create(); sprite1->initWithTexture(texture2d); sprite1->setAnchorPoint(ccp(0.5f, 0.5f));

2014-01-15 15:52:40 7497

原创 cocos2dx之LAYER_NODE_FUNC,LAYER_CREATE_FUNC,SCENE_NODE_FUNC,SCENE_CREATE_FUNC

LAYER_NODE_FUNC自动创建一个layer,SCENE_NODE_FUNC,自动创建一个scene看下源码:#define LAYER_NODE_FUNC(layer) \ CC_DEPRECATED_ATTRIBUTE static layer* node() \ { \ layer *pRet = new layer(); \// new 一个

2014-01-15 11:03:54 2566

原创 cocos2dx之CCLayerColor、CCLayerGradient

CCLayerColor只是用来创建一个有单一颜色的layer,如果想拥有两种颜色的layer的话,那么就需要用CCLayerGradient来创建了。先看CCLayerColor来创建一个单颜色的layer的例子: CCLayerColor *layercolor = CCLayerColor::create(ccc4(255, 0, 0, 255), 100, 100); //lay

2014-01-15 00:14:23 5483

原创 cocos2dx之onEnter,onExit

在创建一个layer时,会自动调用到layer中的onEnter,在退出当前的layer时,会调用到onExit,在CCLayer中,有四个成员方法: void onExitTransitionDidStart();//2,创建完layer的时候调用,也就是1调用完之后调用 void onEnter();//1,创建时调用 void onExit();//3,退出当前la

2014-01-14 17:24:32 15525 3

原创 cocos2dx之node坐标

CCNode与坐标系 Cocos2d-x采用了场景、层、精灵的层次结构来组织游戏元素,与此同时,这个层次结构还对应了游戏的渲染层次,因此游戏元素可以组织成树形结构,称作渲染树。Cocos2d-x把渲染树上的每一个游戏元素抽象为一个节点,即CCNode。一切游戏元素都继承自CCNode,因此它们都具有CCNode所提供的特性。 CCNode定义了一个可绘制对象的通用特性,包括位置、缩放、

2014-01-14 15:36:04 3539

原创 cocos2dx之如何减少纹理所占内存开销

我们在创建游戏的时候,一般都是直接用create来创建,利用create来创建一个简单的ccsprite。例子代码如下: pSprite = CCSprite::create("HelloWorld.png");它会将资源受限存进内存中,然后内存中读取,就可以在屏幕上显示出来了,但是如果我要一下创建10个,100个,或者更多怎么办呢,难道每次调用create(...)把资源一个个放

2014-01-14 15:00:12 5925

原创 cocos2dx之初始化layer

我们在进入layer的时候,首先如果使用默认的方法(LAYER_CREATE_FUNC)初始化,那么它就会进入init,这个方法你可以初始化你的layer和一些sprites,如果你想自己重写layer的onEnter/onExit的话,那么务必请注意,你要在你的onEnter/onExit里面写上基类的Base::onEnter、Base::onExit,否则的话,程序会收不到消息的。举

2014-01-14 10:47:32 4786

原创 cocos2dx之CCDirector

void runWithScene(CCScene *pScene); /**Suspends the execution of the running scene, pushing it on the stack of suspended scenes. * The new scene will be executed. * Try to avoid big sta

2014-01-14 09:53:17 2995

原创 cocos2dx之A星算法

研究了几个小时,看了网上的一些资料,感觉都写得不好,可能是我太笨了,我现在来讲解一下在cocos2dx如何利用A*算法自动寻找目标。我是根据上下左右来进行搜索的,通过不停地去比较F值来取得取得最小代价得到路径:首先:在Map地图中任取2个点,开始点和结束点2,首先判断该点是不是不可以穿越的点,或者是已经再close中了3,如果2步骤为真,什么都不做,如果为假,那么我们就进行添加了4,如果

2014-01-13 23:30:14 3474

原创 cocos2dx之AppDelegate

在创建完了工程之后,我们可以看到AppDelegate这个文件,我们打开看下这里面有什么:AppDelegate::AppDelegate() { //1,构造AppDelegate}AppDelegate::~AppDelegate() {}bool AppDelegate::applicationDidFinishLaunching() {//3,在2初始化完之后进入,结束

2014-01-13 23:28:42 7308

原创 cocos2d之关于对象赋值

在C++中我们赋值都是通过 = 来进行赋值的,不过在此之前,我们应该首先要删掉this的某个指针成员,然后进行内存分配和赋值,但是在cocos2d中呢,我们不这样做了,是先release掉,然后再赋值,看例子代码:void someClass::setObject(CCObject *otherobject) { this->object->release(); otherob

2014-01-13 17:42:14 1152

原创 cocos2dx之release和autorelease

在cocos2dx中,内存管理采用的技术机制,并不是new完之后下一步就delete,它的管理方式是在new了之后,我们需要对它进行计数加1直至这个计数为0的时候,我们才delete掉它。release是在retain后,调用release即刻将计数减1,直至为0的时候,我们才delete掉它。autorelease却不是这样的,在调用了autorelease之后,它将该对象添加到CCPo

2014-01-13 16:24:40 5344

原创 cocos2dx之CCRendTexture

利用CCRendTexture,我们可以动态的渲染纹理,效果很好看,先给例子代码吧,看了网上的一些例子,我都没法掌握(我自己太笨的缘故): CCSize size = CCDirector::sharedDirector()->getWinSize(); CCLayerColor *layercolor = CCLayerColor::create(ccc4(200, 200, 200, 2

2014-01-10 00:13:10 2622

原创 cocos2dx之粒子效果

有时候我们需要做一些特殊的效果,比如子弹爆炸的效果,当然我们用动画也可以做出来,但是有时候发现利用粒子的效果去代替它会跟好看,我们先来看下粒子代码:void ParticleDemoLayer::initLayer() { CCSize size = CCDirector::sharedDirector()->getWinSize(); m_pParticleWorld = CCPar

2014-01-07 23:13:53 5908

原创 用Texture Packer打包数据

在网上下了个破解版的Texture Packer来打包数据,这个工具的作用相必都知道,那我就不解释了,我来讲一下怎么使用吧:1,首先打开Texture Packer软件,然后你往里面添加文件夹(许多个Sprite),或者单个添加Sprite也行。2,在添加完毕之后呢,我们需要publish.3,会弹出一个对话框,让你出入保存文件的名字,这个时候要注意了,需要输入your_file_na

2014-01-04 00:06:11 1344

原创 cocos2dx之Chipmunk

Cocos2Dx中本来没有物理引擎的,Box2D、Chipmunk这两个物理添加入cocos2dx中,为了模拟出更好的真实游戏世界,好了,看代码例子吧:typedef enum { SPRITEBATCHNODE_TAG = 1,} BatchNodeTag;MyChipmunkAccelSprite::MyChipmunkAccelSprite() {}void MyCh

2014-01-02 14:38:02 5367

原创 cocos2dx之scheduleUpdate

在cocos2dx中,我们需要不断地去更新某个动作,我们可以用:scheduleUpdate,但是这个时候我们需要重写CCObject中的update方法,初始化scheduleUpdate有两种方法:1,可以在自己的init方法中初始化它。2,可在onEnter中初始化它,但是一定要CCLayer::onEnter()否则执行不到你的update当然,你还可以利用回调

2014-01-02 12:03:11 3778

Java手游源码 炫舞派对源码(解锁版)eclipse可以打开 .zip

Java手游源码 炫舞派对源码(解锁版)eclipse可以打开

2019-06-12

MYSQL必知必会

对MYDQL的一个全面、详细的了解和掌握需要知道的

2012-10-02

CC++高质量编程

对C/C++的代码格式以及相关编写代码需要注意的细节问题。

2012-10-02

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除