1,利用CCLabelAtals对文字进行渲染,例子代码如下:

void MyLabelAtalsLayer::initLayer() {
    CCSize size = CCDirector::sharedDirector()->getWinSize();
    CCLabelAtlas *atlas = CCLabelAtlas::create(" 123456789yfsrbv 23", "tuffy_bold_italic-charmap.png", 48, 64, ' ');
    atlas->setPosition(ccp(100, size.height / 2.0f));
    atlas->setColor(ccc3(255, 0, 0));
    this->addChild(atlas, 1);
}



Param1: 要显示地数据

Param2:这些数据所在的文件。

Param3:这些数据在文件所占的宽度

Param4:这些数据在文件中所占的高度

Param5:开始字符,字符图片中第一个字符

注:我这里用的是一个空字符,那是因为我的png文件的开始字符是空字符,如果大家的要利用这个渲染文本的时候,你们直接填写你的png的第一个字符即可。

还可以利用plist文件来读取,不过你需要到plist文件中去修改相关参数(create的参数),比如字符的高度,宽度等。


2。还可以利用CCLableTTF来创建一个Label,例子代码如下:

void MyLabelTTFLayer::initLayer() {
    CCSize size = CCDirector::sharedDirector()->getWinSize();
    CCLabelTTF *label = CCLabelTTF::create("I Create a new Label", CCSizeMake(200, 64), kCCTextAlignmentCenter, "Thonburi", 20);
    label->setPosition(ccp(size.width / 2.0f, size.height / 2.0f));
    this->addChild(label, 1);
}



3。CCLabelBMFont这个类也是用来渲染文本的,但是与其他不同的是,该类可以单独获取到每个字符作为一个sprite,然后可以对每个sprite进行另外的操作,实例代码如下:

void MyLabelBMFontLayer::initLayer() {
    CCSize size = CCDirector::sharedDirector()->getWinSize();
    CCLabelBMFont *font = CCLabelBMFont::create("test", "fonts/bitmapFontTest.fnt");
    font->setPosition(ccp(size.width / 2.0f, size.height / 2.0f));
    this->addChild(font);
    int iChildrenCount = font->getChildrenCount();

    CCArray *arraySprite = CCArray::create(iChildrenCount);
    for(int i = 0; i < iChildrenCount; ++i) {
        arraySprite->addObject(font->getChildByTag(i));
    }

    /*
    *@
    */
    CCActionInterval *forwardJumpBy = CCJumpBy::create(4, ccp(10, 10), 50, 20);
    CCActionInterval *backJumpBy = forwardJumpBy->reverse();
    CCAction *font1Action = CCSequence::create(forwardJumpBy, backJumpBy, NULL);
    CCSprite *font1sprite = dynamic_cast<CCSprite *>(arraySprite->objectAtIndex(0));
    font1sprite->runAction(font1Action);

    CCActionInterval *forwardMoveTo = CCMoveTo::create(4, ccp(200, 500));
    CCActionInterval *backMoveTo = CCMoveTo::create(4, ccp(500, 100));
    CCAction *font2Action = CCSequence::create(forwardMoveTo, backMoveTo, NULL);
    CCSprite *font2sprite = dynamic_cast<CCSprite *>(arraySprite->objectAtIndex(1));
    font2sprite->runAction(font2Action);

    CCActionInterval *forwardTintBy = CCTintBy::create(4, 255, 0 , 0);
    CCActionInterval *middleMoveBy = CCMoveBy::create(4, ccp(50, 50));
    CCActionInterval *backTintBy = forwardTintBy->reverse();
    CCFiniteTimeAction *swpanAction = CCSpawn::create(forwardTintBy, middleMoveBy, forwardJumpBy, NULL);
    CCAction *font3Action = CCSequence::create(swpanAction, backTintBy, NULL);
    CCSprite *font3sprite = dynamic_cast<CCSprite *>(arraySprite->objectAtIndex(2));
    font3sprite->runAction(font3Action);

}



第三个sprite,我将多个行为组合在一起,让它有多个动作,这也同事复习了前面的Action动作类!