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动作类!