Count Number with label

Nguồn:
– cocos2d-x and “scrolling numbers in label”
https://muahoasua.wordpress.com/2014/03/09/tao-sprite-sheets-voi-texture-packer-chi-trong-5-phut/

Tạo hiệu ứng tăng số trong 1 label là một yêu cầu thường thấy trong nhiều game, thường được sử dụng để tăng điểm, tăng xu, kết thúc màn chơi, …

Sau đây là 1 implementation đơn giản bằng việc sử dụng CCAction và thừa kế từ CCActionInterval . Ta sẽ viết lại hàm update(), các lớp CCLabelTTF, CCLabelBMFont để thực hiện công việc của mình.

Chúc các bạn may mắn!

Headers:


class ScrollingNumberAction : public cocos2d::CCActionInterval
{
public:

static ScrollingNumberAction* create(int from, int to, float duration);

ScrollingNumberAction(int _from, int _to);
virtual ~ScrollingNumberAction();

protected:

virtual void update(float time);

int from;
int to;
};

Sources:

ScrollingNumberAction* ScrollingNumberAction::create(int from, int to, float duration)
{
ScrollingNumberAction *pAction = new ScrollingNumberAction(from, to);
pAction->initWithDuration(duration);
pAction->autorelease();
return pAction;
}

ScrollingNumberAction:: ScrollingNumberAction(int _from, int _to)
: from(_from), to(_to)
{
}

ScrollingNumberAction::~ ScrollingNumberAction()
{
}

void ScrollingNumberAction::update(float time)
{
if (m_pTarget) {
CCLabelProtocol* label = dynamic_cast(m_pTarget);
int increment = (to - from) * time;
label->setString(IntToString(from + increment).c_str());
}

Cách sử dụng:
CCLabelTTF* label = CCLabelTTF::create();
NumberAction* action = NumberAction::create(from, to, 1.0f);
label->runAction(action);

Advertisements

Trả lời

Mời bạn điền thông tin vào ô dưới đây hoặc kích vào một biểu tượng để đăng nhập:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Đăng xuất / Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Đăng xuất / Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Đăng xuất / Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Đăng xuất / Thay đổi )

Connecting to %s