
cocos2dx学习
文章平均质量分 79
漫步者、
从事游戏开发者
展开
-
如何配置cocos2dx在vs2010的环境
刚开始在上网查找了一些相关资料,自己也下了cocos2dx,在下完后,就开始配置环境了,按照网上有经验的人的做法配置,先是把下下来的工程(选择你当前的vs版本)运行一下,估计要一个小时(我运行的时候是要了一个小时),目的是为了生成lib,dll文件,在生成之后,你最好是把lib,dll文件分别拿出来,新建两个文件Dlls,Libs,分别放入进去,然后就要开始配置vs的配置文件路径了:如图:原创 2013-11-13 00:44:48 · 9082 阅读 · 2 评论 -
cocos2dx之背景Fade in/out
在cocos2dx中,如果我们直接切换背景的话,我们直接使用:CCDirector::sharedDirector()->replaceScene(pScene);但是有时候,我们希望在切换背景的时候尽情fade in/out,这个时候我们需要用CCTransitionFade这个类,它继承了CCTransitionScene,我们来看一下如何切换背景时,进行fade in/out:原创 2013-11-18 17:12:46 · 3406 阅读 · 0 评论 -
cocos2d之,创建一个有背景颜色的layer
创建一个带有背景颜色的Layer,我们需要用到CCLayer的一个派生类CCLayerColor,看如下代码: CCSize s = CCDirector::sharedDirector()->getWinSize(); CCLayer *layer = CCLayerColor::create(ccc4(0xff, 0x00, 0x00, 0x80), 200, 200);原创 2013-11-20 11:02:44 · 17859 阅读 · 0 评论 -
Cocos2dx 之retain ,release
因为功能和接口和objective-c版本的差不多,所以在内存管理上也采用objective-c引用计数的机制来实现内存管理。仔细看了一下cocos2d-x的源代码,确实写的很好,代码组织得很工整。它们所有类都是继承自CCObject, CCObject有retain(), release()和autorelease()等方法,和objective-c上的NSObject用法一致。每当CCObje转载 2013-11-20 17:23:48 · 5871 阅读 · 0 评论 -
Cocos2dx 之 setBlendFunc
CCSprite有一个ccBlendFunc类型的blendFunc_结构体成员,可以用来设置描绘时的颜色混合方案。ccBlendFunc包含了一个src和一个dst,分别表示目标和源的运算因子。 如果我们对一个Sprite使用setBlendFunc方法,如: [Sprite setBlendFunc:(ccBlendFunc){GL_ONE,GL_ZERO转载 2013-11-21 23:25:29 · 15723 阅读 · 0 评论 -
cocos2dx之setTouchesBegan
下面为创建球的例子,目的是为了去点击球体,让就能够获得press的消息,代码如下: for(int i = 0; i < kBallCount; ++i) { CCSprite *sprite_ball = CCSprite::create("MyBall.jpg"); sprite_ball->setTag(i); sprite_ball->setPosition(ccp(原创 2013-11-22 00:13:45 · 1468 阅读 · 0 评论 -
cocos2dx 之如何创建label 做计分板
首先创建label: gameScoreLabel = CCLabelTTF::create("0", "Arial", 30); gameScoreLabel->setColor(ccRED); gameScoreLabel->retain(); gameScoreLabel->setPosition(ccp(s.width / 6, s.height / 6原创 2013-11-22 09:27:44 · 5950 阅读 · 0 评论 -
cocos2dx之创建悬浮节点
悬浮节点(NotificationNode)。我们做游戏时,有时候会有一些悬浮图标,永远要显示在屏幕上,如果每次切换场景都重新创建一次则很麻烦。如果设置了NotificationNode那么切换了场景后,这个节点不会消失。原创 2013-11-22 14:28:03 · 2835 阅读 · 1 评论 -
cocos2dx之CCLayerMultiplex
刚开始接触这个东西,弄了好久都没有弄好,我自己太笨了,现在我将如何创建一个CCLayerMultiplex过程写出来,代码如下: CCLayer *mainLayer = new MenuDemo; CCLayer *menu1 = new MenuDemoItem1; CCLayer *menu2 = new MenuDemoItem2; CCLayer *me原创 2013-11-26 14:37:55 · 1768 阅读 · 4 评论 -
cocos2dx之如何生成动画
我们在制作游戏的过程中,看到的sprite都很多不同的行为,其实就是很多张图构成的,我们可以用工具texture Packer来生成plist文件,然后只要读取该图片中的帧数就可以了,我们接下来看代码:void MySpriteAnimationLayer::initLayer() { CCSize s = CCDirector::sharedDirector()->getWinSi原创 2013-12-07 23:30:14 · 3325 阅读 · 0 评论 -
cocos2dx之CCCamera
在cocos2dx中,如何去创建一个camera,代码如下:void MyCameraLayerBase::initLayer() { CCSize size = CCDirector::sharedDirector()->getWinSize(); CCSprite *sprite = CCSprite::create("BG.jpg"); sprite->setPosition原创 2013-12-09 21:50:01 · 8148 阅读 · 6 评论 -
cocos2dx之创建有渐影效果的sprite
在创建带有渐影效果的sprite,我们需要用到所提供的类:CCMotionStreakSprite,例子代码如下:void MyMotionStreakBase::initLayer() { CCSize size = CCDirector::sharedDirector()->getWinSize(); streak = CCMotionStreak::create(3, 3,原创 2013-12-09 23:20:48 · 5804 阅读 · 4 评论 -
cocos2dx之多点触屏
在多点触屏的实现中,我们用到了CCLayer中的: void ccTouchesBegan(CCSet *pTouches, CCEvent *pEvent); void ccTouchesMoved(CCSet *pTouches, CCEvent *pEvent); void ccTouchesEnded(CCSet *pTouches, CCEvent *pEven原创 2013-12-03 14:08:11 · 3402 阅读 · 0 评论 -
cocos2d之教你画一条直线
我们画一条直线用到的是CCDrawLine,代码如下:void MyLineLayerBase::initLayer() { CCSize size = CCDirector::sharedDirector()->getWinSize(); CCSprite *sprite = CCSprite::create("BG.jpg"); sprite->setPosition(cc原创 2013-12-10 22:17:48 · 13060 阅读 · 1 评论 -
cocos2dx之创建CCControlSlider
采用CCControlSlider创建,代码如下: CCControlSlider *slider = CCControlSlider::create("extensions/sliderTrack.png","extensions/sliderProgress.png" ,"extensions/sliderThumb.png"); slider->setAnchorPoint(cc原创 2013-11-29 22:58:31 · 2566 阅读 · 0 评论 -
cocos2dx之如何实现自己的sprite
可能在制作游戏的过程中,用到sprite,但是它本省的方法有限,我需要再次扩充它,那么我们可以通过继承得到自定义的sprite:定义如下:#ifndef MYSPRITEBASE_H_#define MYSPRITEBASE_H_#include "cocos2d.h"USING_NS_CC;class MySprite : public CCSprite, public CC原创 2013-12-03 16:03:54 · 5759 阅读 · 3 评论 -
cocos2dx之创建Button
利用CCControlButton创建一个Button,代码如下:void MyBottonBastLayer::initLayer() { CCSize size = CCDirector::sharedDirector()->getWinSize(); CCScale9Sprite *psc9Selected = CCScale9Sprite::create("btn-ab原创 2013-12-04 11:09:13 · 22065 阅读 · 1 评论 -
cocos2d之CCBezierBy,CCBezierTo
http://blog.youkuaiyun.com/we000636/article/details/8616355,这篇文章写得很详细,我在此基础上写了个例子,代码如下: void MyActionBezierLayer::initLayer() { CCSize size = CCDirector::sharedDirector()->getWinSize(); CCSprite *pS原创 2013-12-12 00:34:07 · 5349 阅读 · 0 评论 -
cocos2dx之如何延时当前动作
在执行某个行为动作的时候,有时候根据需求,可能需要暂停一段时间,然后继续执行,这个时候我们可以用到,CCDelayTime这个类,它是CCActionInterval的派生类。好,现在我们来看一下如何创建一个延时的行为动作,代码如下:void MyActionCCDelayTimeLayer::initLayer() { CCSize size = CCDirector::shar原创 2013-12-12 16:54:14 · 9997 阅读 · 2 评论 -
cocos2dx之闪烁效果-CCBlink
想让自己创建的sprite有闪烁的效果 ,就需要利用到CAction的派生类:CCBlink了,详细代码如下:void MyActionCCBlinkLayer::initLayer() { CCSize size = CCDirector::sharedDirector()->getWinSize(); CCSprite *spriteBlink = CCSprite::cr原创 2013-12-12 16:18:17 · 16754 阅读 · 1 评论 -
cocos2dx之FadeIn,FadeOut,FadeTo
void MyActionFadeLayer::initLayer() { CCSize size = CCDirector::sharedDirector()->getWinSize(); /* *@FadeTo */ CCSprite *spriteFadeTo = CCSprite::create("r1.png"); spriteFadeTo原创 2013-12-12 23:36:47 · 26264 阅读 · 4 评论 -
cocos2dx之MoveTo,MoveBy
void MyActionMoveToLayer::initLayer() { /* *@MoveTo,移动到某个Point */ CCSize size = CCDirector::sharedDirector()->getWinSize(); CCSprite *spriteMoveTo = CCSprite::create("snow.png");原创 2013-12-13 11:00:37 · 20711 阅读 · 0 评论 -
cocos2dx之CCRotateTo、CCRotateBy
我学习的这个版本是2.0版的,后面版本都已经更新了,所以在使用改变CCRotateTO、CCRotateBy改变运动需要借助其他的成员方法,下面的例子是在2.0编写的:void MyActionRotateLayer::initLayer() { CCSize size = CCDirector::sharedDirector()->getWinSize(); /* *原创 2013-12-13 11:40:13 · 7854 阅读 · 0 评论 -
cocos2dx之CCJumpTo、CCJumpBy
CCJumpTo:把某一CCSprite跳到某一位置CCJumpBy:把某一CCSprite跳起一段距离,它有一个方法reverse,它让对象按原路径返回例子如下:void MyActionJumpLayer::initLayer() { CCSize size = CCDirector::sharedDirector()->getWinSize(); /* *原创 2013-12-13 14:43:48 · 8569 阅读 · 0 评论 -
cocos2dx之cCCSpawn
如果我们需要将两个不同的动作组合到一起,那我们就用CCSpawn,等下讲一下它和CCSequence的区别: CCSprite *spriteSpaw = CCSprite::create("leftNormal.jpg"); spriteSpaw->setPosition(ccp(size.width / 2.0f, size.height / 2.0f)); th原创 2013-12-15 17:29:22 · 6724 阅读 · 0 评论 -
cocos2dx之CCScaleBy,CCScaleTo
如果我们需要对一个sprite进行缩放,那么我需要用到这个CCScaleBy/TO了。代码例子如下:void MyActionScaleLayer::initLayer() { CCSize size = CCDirector::sharedDirector()->getWinSize(); CCSprite *spriteTo = CCSprite::create("leftSe原创 2013-12-15 22:23:40 · 3759 阅读 · 0 评论 -
cocos2dx之CCTintTo、CCTintBy
CCTintTo、CCTintBy是将sprite的颜色调到你想设置的目标颜色,例子代码如下:void MyActionTintLayer::initLayer() { CCSize size = CCDirector::sharedDirector()->getWinSize(); /* *@Tinn */ CCSprite *spriteTint =原创 2013-12-16 10:40:24 · 7107 阅读 · 0 评论 -
cocos2dx之CCTargetedAction
CCTargetedAction,改变当前执行的sprite,例子代码如下:void MyActionTargetedLayer::initLayer() { CCSize size = CCDirector::sharedDirector()->getWinSize(); CCSprite *sprite = CCSprite::create("blocks.png");原创 2013-12-16 16:30:31 · 1848 阅读 · 0 评论 -
cocos2dx之CCCardinalSplineBy
基于曲线移动到相应位置,例子代码如下:void MyActionCardinalSplineLayer::initLayer() { CCSize size = CCDirector::sharedDirector()->getWinSize(); CCSprite *sprite = CCSprite::create("blocks.png"); sprite->se原创 2013-12-16 17:36:21 · 1539 阅读 · 0 评论 -
cocos2dx之CCReverseTime
我们一般在做某个一个Action的时候,我们需要返回会用到该sprite的reverse,但是又时候,我需要这种行为再reverse的时候,我就可以利用CCReverseTime达到这种效果,例子代码如下: CCSprite *spriteTint = CCSprite::create("blocks.png"); spriteTint->setPosition(ccp(size原创 2013-12-16 14:18:18 · 2796 阅读 · 0 评论 -
cocos2dx之CCAnimate创建一个动画
前面的文章中也有例子是创建一个动画,利用的是文件创建,将所有的Sprite加载到一个文件中去,然后读出,现在我们尝试不用文件,直接利用CCAnimate来创建一个sprite动画,例子代码如下:void MyActionAnimateLayer::initLayer() { CCSize size = CCDirector::sharedDirector()->getWinSize()原创 2013-12-16 11:23:30 · 10915 阅读 · 1 评论 -
cocos2dx之创建一个菜单按钮
1,在没有图片资源的情况下,如果想要创建一个只有字体的Menu按钮,看如下代码的创建步骤: CCLabelTTF *label = CCLabelTTF::create("Exit", "Arial", 20); // create a exit botton CCMenuItemLabel *exit_game = CCMenuItemLabel::creat原创 2013-11-20 09:42:25 · 13004 阅读 · 0 评论 -
cocos2dx之文本渲染(CCLabelAtlas,CCLableBMFont,CCLabelTTF)
1,利用CCLabelAtals对文字进行渲染,例子代码如下:void MyLabelAtalsLayer::initLayer() { CCSize size = CCDirector::sharedDirector()->getWinSize(); CCLabelAtlas *atlas = CCLabelAtlas::create(" 123456789yfsrbv 23原创 2013-12-17 15:06:59 · 5177 阅读 · 1 评论 -
cocos2dx之scheduleUpdate
在cocos2dx中,我们需要不断地去更新某个动作,我们可以用:scheduleUpdate,但是这个时候我们需要重写CCObject中的update方法,初始化scheduleUpdate有两种方法:1,可以在自己的init方法中初始化它。2,可在onEnter中初始化它,但是一定要CCLayer::onEnter()否则执行不到你的update当然,你还可以利用回调原创 2014-01-02 12:03:11 · 3825 阅读 · 0 评论 -
cocos2dx之Chipmunk
Cocos2Dx中本来没有物理引擎的,Box2D、Chipmunk这两个物理添加入cocos2dx中,为了模拟出更好的真实游戏世界,好了,看代码例子吧:typedef enum { SPRITEBATCHNODE_TAG = 1,} BatchNodeTag;MyChipmunkAccelSprite::MyChipmunkAccelSprite() {}void MyCh原创 2014-01-02 14:38:02 · 5424 阅读 · 0 评论 -
cocos2dx之CCTouchTargetedDelegate、CCTouchStandardDelegate 吞噬触屏
为了搞懂这个两个到底是咋回事,花费了我一天的功夫,没有办法,我人很笨的,在网上找了好多资料都没有找到关于吞噬触屏,也就是在一个Scene下,多个layer直接如何进行消息的传递和吞噬的。好了,废话不多说,先来了解这个两个"禽兽"吧!CCTouchTargetedDelegate,属于单点触屏,CCTouchStandardDelegate,属于多点触屏我们在实现自己的触屏的时候,需原创 2013-12-18 16:09:31 · 3090 阅读 · 1 评论 -
cocos2dx之CCAccelerometerDelegate
CCAccelerometerDelegate的消息处理机制与win32的消息处理机制一样的,由于篇幅太长,我就不详细解答,CCAccelerMeterDelegate例子代码如下:void MyAcceleroMeterLayerTest::initLayer() { CCSize size = CCDirector::sharedDirector()->getWinSize()原创 2013-12-20 11:53:08 · 1885 阅读 · 0 评论 -
用Texture Packer打包数据
在网上下了个破解版的Texture Packer来打包数据,这个工具的作用相必都知道,那我就不解释了,我来讲一下怎么使用吧:1,首先打开Texture Packer软件,然后你往里面添加文件夹(许多个Sprite),或者单个添加Sprite也行。2,在添加完毕之后呢,我们需要publish.3,会弹出一个对话框,让你出入保存文件的名字,这个时候要注意了,需要输入your_file_na原创 2014-01-04 00:06:11 · 1411 阅读 · 0 评论 -
cocos2dx之创建一个输入框
在游戏中,有时候修要用户输入用户名密码等,这时候需要用到虚拟键盘来实现,在Cocos2dx中,通过使用集成输入法代理类(CCIMEDelegate)和其字标签类(CCLabelTTF)的输入框类(CCTextFieldTTF)来实现。例子代码如下:class KeyboardNotificationLayer;class MyTextInputLayer : public MyText原创 2013-12-20 17:14:48 · 10513 阅读 · 0 评论 -
cocos2dx之CCEditBox
上一篇文章是用到CCTextFieldTTF来创建的一个输入框,现在我们用CCEditBox来创建一个输入框,它是在2.0版本后加入的,好了,看例子吧: CCEditBox *m_InputBox;定义一个editbox; void MyEditBoxLayer::initLayer() { CCSize size = CCDirector::sharedDirecto原创 2013-12-23 09:18:43 · 5898 阅读 · 1 评论