【2048强势来袭】第二期:创建卡片类
2014-04-15 15:57
239 查看
手游2048中,移动的其实是卡片,下面我们就来创建一个卡片类。
代码已经注释得很详细了,就不再具体解释了。
别忘了在cpp文件中引入CardSprite.h头文件。
这样,我们就成功创建了卡片类。
最后要特别感谢一下帅印。
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__
代码已经注释得很详细了,就不再具体解释了。
2. 新建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头文件。
这样,我们就成功创建了卡片类。
最后要特别感谢一下帅印。
相关文章推荐
- 【2048强势来袭】第一期:搭建上下左右手势识别的框架
- 【2048强势来袭】第四期:游戏滑动上下左右相加的逻辑
- 【2048强势来袭】第七期:添加游戏分数模块
- 【2048强势来袭】第八期:优化游戏界面
- 【2048强势来袭】第五期:游戏自动生成随机卡片
- 【2048强势来袭】第三期:把卡片添加到游戏中
- 【2048强势来袭】第六期:添加游戏是否还能够继续的模块
- 阿里云弹性高性能计算E-HPC强势来袭,全新打造一站式云超算
- Linux入门经典《循序渐进Linux》第二版强势来袭!
- 北风网端午节活动强势来袭 即买即送现金
- 讯飞的windows新版SDK强势来袭,想体验下!
- 自定义View强势来袭,用自定义View实现歌词显示控件上篇之实现歌词文件解析
- 社交软件强势来袭,谁来革新中国企业管理模式?
- Apple Pay强势来袭,开发者应做的事情
- 工业4.0时代,强势来袭!
- 2048经典版震撼来袭,多种游戏模式,三种布局,来迎接挑战吧!
- 【移动开发人员沙龙 北京站】第二期 报名火热来袭
- 大数据+互联网金融时代,“可以融资的BI”强势来袭!
- 阿里云Tech Insight 企业迁云实战专场强势来袭!
- 10月10日云栖精选夜读:阿里云Tech Insight 企业迁云实战专场强势来袭!