您的位置:首页 > 移动开发 > Cocos引擎

cocos2d-x 编写的金币显示板(单个数字的)

2013-07-15 15:58 141 查看
前言:别管什么游戏都会有一个显示金币的面板,用于显示当前有多少钱什么的,之后用这些钱可以去买点装备,药水什么的,自己编写了一个用于显示金币的面板,只是实现了基本的功能,只能显示一个数字,当然了大家可以多创建几个,随后我将把我完整的显示板写出来,供大家参考大家先看看效果:1.代码编写
//
//  NumberSprite.h
//  ShowNumberNodeTest
//
//  Created by Za aa on 13-7-14.
//
//

#ifndef __ShowNumberNodeTest__NumberSprite__
#define __ShowNumberNodeTest__NumberSprite__

#include "cocos2d.h"
USING_NS_CC;
class  NumberSprite : public CCSprite
{
public:
/*
创建一个数字精灵
参数:
pTexture: 包含所有数字图片的图片
width; 单个数字显示的图片宽度
lenght; 数字显示高度
*/
static NumberSprite * CreateNumberSprite(CCTexture2D *pTexture,float width,float lenght);

/*
直接显示数字
参数:
num 是显示的数字图片序号
isanimation:是否显示动画
*/
void f_ShowNumber(int num);

/*
带动画显示数字
参数:
startnum:开始的图片序号
endnum:滚动到的图片序号
dt:动画的时间
*/
void f_ScrolltoNumber(int startnum,int endnum,float dt);

/**初始化 */
bool myInit(float width,float lenght);

/**更新图片,生成动画,根据时间调用*/
void logic(float dt);

private:
/** 保存输入的图片宽高,用于显示滚动数字或是直接显示数字*/
//保存显示图片宽度
float s_width;
//保存图片高度
float s_lenght;

/**d当前显示的图片序号*/
int s_ImagesNum;
//    终止显示的图片序号,动画用
int s_EndNum;
};

#endif /* defined(__ShowNumberNodeTest__NumberSprite__) */
////  NumberSprite.cpp//  ShowNumberNodeTest////  Created by Za aa on 13-7-14.////#include "NumberSprite.h"bool NumberSprite::myInit(float width, float lenght){s_width     =   width;s_lenght    =   lenght;}NumberSprite *NumberSprite::CreateNumberSprite(CCTexture2D *pTexture, float width, float lenght){NumberSprite *pobSprite = new NumberSprite();if (pobSprite && pobSprite->initWithTexture(pTexture)  ){pobSprite->setVisible(false);pobSprite->myInit(width , lenght);pobSprite->autorelease();return pobSprite;}CC_SAFE_DELETE(pobSprite);return NULL;}void NumberSprite::f_ShowNumber(int num){s_ImagesNum     =   num;this->setVisible(true)  ;this->setTextureRect(CCRectMake(s_width * num, 0, s_width, s_lenght));}/*带滚动显示数字注意:这个函数使用时,必须已经显示了一次数字,也就是必须调用了一次shownumber,或是scrollnumber参数:endnum: 需要显示的数字,滚动终止数字dt:变换数字时间*/void NumberSprite::f_ScrolltoNumber(int endnum, float dt){s_EndNum  =  endnum ;schedule(schedule_selector(NumberSprite::logic),dt);}void NumberSprite::f_ScrolltoNumber(int startnum, int endnum, float dt){s_ImagesNum     =   startnum;s_EndNum        =   endnum;schedule(schedule_selector(NumberSprite::logic), dt);}/**更新图片,生成动画,根据时间调用*/void NumberSprite::logic(float dt){if (s_ImagesNum > 9 ){s_ImagesNum = 0;}f_ShowNumber(s_ImagesNum);if (s_ImagesNum == s_EndNum){this->unscheduleUpdate();return;}s_ImagesNum++;}
2.使用例子
void HelloWorld::addNumberSprite(){CCSpriteBatchNode *batchNode = CCSpriteBatchNode::create("menublood_num.png");batchNode->setPosition(ccp(100,100));this->addChild(batchNode);NumberSprite * nsp  = NumberSprite::CreateNumberSprite(batchNode->getTexture(),22,33);batchNode->addChild(nsp);// nsp->setPosition(ccp(100,100));nsp->f_ScrolltoNumber(0,9,0.1f);//nsp->f_ShowNumber(1);}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐