cocos2d-x文本动态显示实现代码

来源:互联网 发布:丝路英雄冒险数据 编辑:程序博客网 时间:2024/04/29 11:41

头文件:

#include <string>using namespace std;#include "cocos2d.h"using namespace cocos2d;class DynamicText:public CCNode{private:    CC_SYNTHESIZE(CCLabelTTF *, ttf, Ttf);    CC_SYNTHESIZE(string, text, Text);    CC_SYNTHESIZE(int, length, Length);public:    static DynamicText * create(CCPoint leftTop, CCSize dim, const char* text,const char* fontName, float fontSize, float speed);    void update(float dt);public:    };

源文件:

#include "DynamicText.h" DynamicText * DynamicText::create(CCPoint leftTop, CCSize dim, const char* text,const char* fontName, float fontSize, float speed){    DynamicText * pRet = new DynamicText();    pRet->ttf = CCLabelTTF::create("", dim, kCCTextAlignmentLeft,kCCVerticalTextAlignmentTop, fontName, fontSize);    if(pRet)    {        pRet->setPosition(leftTop);        pRet->setText(text);        pRet->setLength(0);        pRet->addChild(pRet->ttf);        pRet->ttf->setAnchorPoint(ccp(0, 1));        pRet->schedule(schedule_selector(DynamicText::update), speed);        pRet->autorelease();        return pRet;    }    CC_SAFE_DELETE(pRet);    return 0;}void DynamicText::update(float dt){    length += 1;    if(length <= text.size()){        //utf-8?        if(text[length-1] < 0){            length += 2;        }        ttf->setString(text.substr(0, length).c_str());    }else{        unscheduleAllSelectors();     }}

使用示例:

DynamicText * dt = DynamicText::create(ccp(-512+30,-384+130), CCSizeMake(1024-60, 130), "Unicode在范围D800-DFFF中不存在任何字符,基本多文种平面中约定了这个范围用于UTF-16扩展标识辅助平面(两个UTF-16表示一个辅助平面字符)。","楷体",30, 0.02);node->addChild(dt);
0 0
原创粉丝点击