2cocos2dx别踩白块游戏案例
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, ccColor3B strColor); ??? //create方法依賴init方法,所以這里的init參數和create ??? //參數實際上相同的 ??? bool init(CCSize size, ccColor3B color, ??????? CCString str, float strSize, 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::create(CCSize size, ccColor3B color, ??? CCString str, float strSize, 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 Block::init(CCSize size, ccColor3B color, ??? CCString str, float strSize, ccColor3B strColor) { ??? //注意:這里的塊是一個精靈 ??? CCSprite::init(); ? ??? //設置塊的大小 ??? setContentSize(size); ??? //設置渲染的大小 ??? setTextureRect(CCRectMake(0, 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 CCArray * Block::getBlocksArray() { ??? return array; } ? void Block::moveDownAndCleanUp() { ??? //行號減去1 ??? _lineIndex--; ??? //往下走一個格 ??? CCMoveTo * to = CCMoveTo::create(0.01, ??????? ccp(getPositionX(), getPositionY() - winSize.height / 4)); ??? this->runAction(to); ??? ??? //從節點中拿走 ??? if (_lineIndex < 0) ??? { ??????? //從數組中拿走,這里將引用計數減1,讓它不影響渲染數的問題 ??????? array->removeObject(this); ??????? removeFromParentAndCleanup(true); ??? } } |
| 運行結果:
|
?
?
總結
以上是生活随笔為你收集整理的2cocos2dx别踩白块游戏案例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 为什么说宪法是国家的根本大法?
- 下一篇: 义务兵退役后有什么优待政策?