sslin

岁月匆匆,偶尔记录些做过的事情

导航

cocos2d-x SimpleGame制作三部曲 -- 学习笔记

Ray Wenderlich 写的《How To Make A Simple iPhone Game with Cocos2D 2.X Tutorial》作为cocos2d初学者的入门demo非常合适

以下是cocos2dx版本的教程,

如何制作一个简单的游戏(1) Cocos2d-x 2.0.4

如何制作一个简单的游戏(2) Cocos2d-x 2.0.4

如何制作一个简单的游戏(3) Cocos2d-x 2.0.4

感谢作者的分享,文章很详细,以下记录一些自己学习过程中的心得:

=========================Start:=========================

CCLayerColor::initWithColor(ccc4(255,255,255,255)); //初始一个带颜色的层; ccc4:创建一个r,g,b,o(opacity:不透明度); 还有ccc3:r,g,b

CCDirector::shareDirector() //返回一个导演实例;方法 getWinSize获取游戏主题大小

CCSprite *player = CCSprite::create('path'); //创建一个精灵; 资源直接读取到Resources目录下;

CCRectMake(0,0,27,40) //返回一个矩形区域;

sprite->setPosition() 设置精灵的坐标

this->addChild()  //添加到舞台上,revomeChild()移除

ccp(int __X__,int __Y__) //返回一个坐标

rand()%X // 获得0-X的一个随机整数

CCMoveTo::create(时间,目标地点)  //创建一个直线移动路径

CCCallFuncN::create(this,callFuncN_selector(类名::函数名)) 创建一个回调函数

CCCallFunc中的回调函数不带参数, CCCallFuncN中的函数带一个参数 , CCCallFuncND中的函数带两个参数,第二个为任意类型;

sprite->runAction(CCSequence::create(动作1,动作2,,,NULL)) //让精灵运行一系列的动作

this->schedule(schedule_selector(类名:函数名),间隔时间) //设置定时器,固定间隔时间执行某个动作,相当于js和as中的setInterval, 如果不设置间隔时间,那么为每帧执行

virtual void ccTouchesEnded(cocos2d::CCSet *pTouches, cocos2d::CCEvent *pEvent); //再重载函数时候需要使用virtual,参数中需指明cocos2d::类,ccTouchesEnd为触摸事件

CCTouch *touch = (CCTouch*)pTouches->anyObject();  //获取触控点

CCPoint location = this->convertTouchToNodeSpace(touch); //获取触控点的坐标

CCPoint offset = ccpSub(坐标A,坐标B) // 获得两个坐标点的差值offset.x offset.y

sprite->release(); sprite = NuLL; //清空精灵变量

sprite->setTag(int X); //设置精灵的标签, getTag() 获取标签

CCArray::create(); //创建CC数组, addObject 

CCArray x->addObject(); //为数组添加变量, revomveObject 移除数组变量;

CCARRAY_FOREACH(CCArray,CCObject) // 迭代循环数组,CCObject需要先定义 CCObject *pobj = NULL;

CCSprite *projectile = (CCSprite*)pObject; //CCobject类型可进一步定义;

CCRect::CCRectIntersectRect(sprite1->boudingBox(),sprite2->boundingBox());  //矩形的碰撞检测

CocosDenshion::SimpleAudioEngine::shareEngine()->playerBackgroundMusic("path") //播放背景音乐, ->playerEffect()播放音效

CCLabelTTF:create(msg,字体,字号); //创建一个文字标签

CCDelayTime::create(3) //创建一个延迟3秒时间

CCDirector::sharedDirector()->replaceScene(gameOverScene); //场景切换;

Sprite->setRotation(cocosAngle); //设置角度 Degree

cpp文件中定义函数时,如果没有指明类名,那么将无法使用类的成员变量;

关于CCObject的retain(),是手动管理内存的方式,通过retain保持住对象的占用,使计数器+1,不会因为remove等操作而找不到变量地址;

sqrtf() //开方返回float类型

CCRotateTo::create(时间,目标角度) //旋转对象

do{}while(0)的用法在程序中大量使用,一个过程代码遇到跳出条件时则重新执行,保证了代码行的同步执行顺序;

CC_SYNTHESIZE(varType, varName, funName); //用于声明保护变量,然后可以通过getter和setter来操作变量;

CREATE_FUNC(funcname) //创建一个自己类的create方法;调用的类的init()方法;

一个头文件中的各个class结束时都要记得;结束符 // class1{}; class2{}; 注:在.cpp文件中不需要

(CCArray*)array -> objectAtIndex(索引) // 返回该索引的数组元素;

CCString::createWithFormat(格式化,变量,,) // 创建字符串;

static LevelManager *sharedInstance(void){  }  //单例模式, LevelManager::sharedInstance()->...

CCObject->autorelease() //使用new之后,调用autolease()我们就不必在去操作它的内存释放;

(END)

 

 

 

 

 

 

 

posted on 2012-12-28 18:23  sslin  阅读(520)  评论(0编辑  收藏  举报