【2048强势来袭 cocos2d-x版本】第二期:创建卡片类

手游2048中,移动的其实是卡片,下面我们就来创建一个卡片类。

  1. 新建头文件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__

代码已经注释得很详细了,就不再具体解释了。

  1. 新建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

最后要特别感谢一下帅印大神!

简直惨不忍睹 给你挽尊 这么多点击 一个回复都没有 你们这帮禽兽

:14: :14: :14: 哈哈,还是大侠给力啊

我也来支持lz,教程思路写的很清晰,不错

哈哈,非常感谢 :2: :2: :2: :2:

支持楼主 加油加油加油加油加油加油加油加油加油加油加油加油加油