手游2048中,移动的其实是卡片,下面我们就来创建一个卡片类。
- 新建头文件CardSprite.h,代码如下:
#ifndef __CARDSPRITE_SCENE_H__
#define __CARDSPRITE_SCENE_H__
#include "cocos2d.h"
class CardSprite : public cocos2d::Sprite
{
public:
//初始化的数值,宽度,高度,卡片X轴,卡片Y轴 static CardSprite* createCardSprite(int numbers,int width,int height,float CardSpriteX,float CardSpriteY);
virtual bool init(); CREATE_FUNC(CardSprite);
//获取数字
int getNumber();
//设置数字
void setNumber(int num);
private:
//显示在界面中的数字
int number; void enemyInit(int numbers,int width,int height,float CardSpriteX,float CardSpriteY);
//定义显示数字的控件
cocos2d::LabelTTF* labelTTFCardNumber;
//显示背景
cocos2d::LayerColor* layerColorBG;
};
#endif // __CARDSPRITE_SCENE_H__
代码已经注释得很详细了,就不再具体解释了。
- 新建CardSprite.cpp文件
(1)createCardSprite()函数的实现基本是模板,代码如下:
CardSprite* CardSprite::createCardSprite(int numbers,int width,int height,float CardSpriteX,float CardSpriteY)
{ CardSprite* enemy = new CardSprite();
if(enemy && enemy->init()) { enemy->autorelease();
enemy->enemyInit(numbers, width, height, CardSpriteX, CardSpriteY);
return enemy; }
CC_SAFE_DELETE(enemy); return NULL;}
(2)init()函数的具体实现如下:
bool CardSprite::init()
{ if(!Sprite::init())
{ return false; }
return true;}
(3)下面我们来看一下enemyInit()函数的具体实现:
void CardSprite::enemyInit(int numbers,int width,int height,float CardSpriteX,float CardSpriteY){ //设置初始化值 number = numbers;
//加入游戏的背景颜色 layerColorBG = cocos2d::LayerColor::create(cocos2d::Color4B(200,190,180,255),width-15,height-15); layerColorBG->setPosition(Point(CardSpriteX,CardSpriteY));
//判断如果大于0就显示,否则显示空 if(number > 0) { //加入中间字体 labelTTFCardNumber = LabelTTF::create(String::createWithFormat("%i",number)->getCString(),"HiraKakuProN-W6",100); labelTTFCardNumber->setPosition(Point(layerColorBG->getContentSize().width/2,layerColorBG->getContentSize().height/2)); labelTTFCardNumber->setTag(8); layerColorBG->addChild(labelTTFCardNumber); } else { //加入中间字体 labelTTFCardNumber = LabelTTF::create("","HiraKakuProN-W6",100); labelTTFCardNumber->setPosition(Point(layerColorBG->getContentSize().width/2,layerColorBG->getContentSize().height/2)); labelTTFCardNumber->setTag(8); layerColorBG->addChild(labelTTFCardNumber); }
this->addChild(layerColorBG);}
(4)setNumber()和getNumber()函数如下:
//获取数字int CardSprite::getNumber(){ return number;}
//设置数字void CardSprite::setNumber(int num){ number = num;
if(number > 0) { //获取数字重新更新数字 labelTTFCardNumber->setString(String::createWithFormat("%i",number)->getCString()); } else { labelTTFCardNumber->setString(""); }}
别忘了在cpp文件中引入CardSprite.h头文件。
这样,我们就成功创建了卡片类。
不断更新中。或者请猛戳 http://blog.csdn.net/legendof1991?viewmode=contents 感谢支持
第一期:http://www.cocoachina.com/bbs/read.php?tid=198237
http://www.cocoachina.com/bbs/read.php?tid=198237
最后要特别感谢一下帅印大神!