1 建立一个别踩白块的项目dtwb(Don’ttouch white block)
2 修改main.cpp中的代码
3 修改AppDelegate.cpp中的代码
4 案例代码
Block.h |
#ifndef __BLOCK_H__ #define __BLOCK_H__ #include "cocos2d.h" USING_NS_CC; class Block :public CCSprite { public: //分別表示块大小,块颜色,块中的字符串,字的大小,颜色 static Block * create(CCSize size,cccolor3B color, CCString str,float strSize,133); Font-family:新宋体; Font-size:9.5pt">cccolor3B strcolor); //create方法依赖init方法,所以这里的init参数和create //参数实际上相同的 bool init(cccolor3B strcolor);
//CCArray用于存储block的信息 static CCArray * array; //获得块对应的Array static CCArray * getBlocksArray();
//相当于定义一个lineIndex的getlineIndex,setlineIndex方法 CC_SYNTHESIZE(int,_lineIndex,lineIndex);
//向下移动并且将下面的元素清空 voID moveDownAndCleanUp(); };
#endif |
Block.cpp |
#include "Block.h" #include "AppMacros.h"
//定义块的CCArray CCArray * Block::array = NulL;
//这里的create依赖下面的init,所以create中的参数和init中的参数是一样的 Block * Block::cccolor3B strcolor) { //如果array是空的,那么就创建一个新的 if (array == NulL) { array = CCArray::create(); //因为array走的不是渲染数,所以要加上retain() array->retain(); } Block * pRet = new Block; if (pRet && pRet->init(size,color,str,strSize,strcolor)) { pRet->autorelease(); //将这个块儿添加到array中去 array->addobject(pRet); } else { delete pRet; pRet = NulL; } return pRet; }
bool cccolor3B strcolor) { //注意:这里的块是一个精灵 CCSprite::init();
//设置块的大小 setContentSize(size); //设置渲染的大小 setTextureRect(CCRectMake(0,size.wIDth,size.height)); //设置块儿的颜色 setcolor(color); //设置块儿的锚点 setAnchorPoint(ccp(0,0));
//设置块儿中的文字,不在create里面赋值是因为默认的字体更好些 cclabelTTF *label = cclabelTTF::create(); //设置label的字符串 label->setString(str.getCString()); //设置字体的大小 label->setFontSize(strSize); //设置字体的颜色 label->setcolor(strcolor); //设置字的位置 label->setposition(ccp(size.wIDth / 2,size.height / 2)); addChild(label);
return true; }
//取出array getBlocksArray() { return array; }
voID moveDownAndCleanUp() { //行号减去1 _lineIndex--; //往下走一个格 CCMoveto * to = CCMoveto::create(0.01, ccp(getpositionX(),0); Font-family:新宋体; Font-size:9.5pt">getpositionY() - winSize.height / 4)); this->runAction(to);
//从节点中拿走 if (_lineIndex < 0) { //从数组中拿走,这里将引用计数减1,让它不影响渲染数的问题 array->removeObject(this); removeFromParentAndCleanup(true); } } |
运行结果:
|
以上是内存溢出为你收集整理的2cocos2dx别踩白块游戏案例全部内容,希望文章能够帮你解决2cocos2dx别踩白块游戏案例所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)