废话不多说,先上代码
NumberScroller.h
#ifndef _NUMBERSCROLLER_H_
#define _NUMBERSCROLLER_H_
#include "cocos2d.h"
USING_NS_CC;
/*
这是一个数字滚动切换控件
更新方向:
1.在规定时间运动完,速度在变化
2.能指定字体表
3.增加新的更新算法,确保运动到指定数时候可以及时完成
4.添加能够指定宽和高以及数字之间的间隔
*/
class NumberColumn : public Node{
private:
NumberColumn();
public:
static NumberColumn* create(int fontHight);
void setNumber(int number,bool direction=true);
void setTime(float time);
private:
bool init(int fontHight);
void update(float delta);
private:
Node* m_numbers; //当前显示节点
int m_cur_num; //当前显示数字
int m_target_num; //目标显示数组
int m_fontHight; //当个字体高度
float m_time; //切换总时间
float update_moveSum; //几率在两个数字更新期间移动的距离
float update_speed; //刷新一次的时间
};
class NumberScroller : public Node{
private:
NumberScroller();
public:
static NumberScroller* create(int length,int fontWidth,int fontHeight,int fontSpacing);
void setTime(float time);
void setNumber(int number);
int getNumber();
private:
bool init(int