//------------------------------------------------------------------ // // Rich Label // //------------------------------------------------------------------ void CommonRichLabel::onEnter() { CommonDemo::onEnter(); setOpacity(255); setColor(ccRED); CCSize visibleSize = CCDirector::sharedDirector()->getVisibleSize(); CCPoint origin = CCDirector::sharedDirector()->getVisibleOrigin(); // English, Chinese, color, font, overall test CCRichLabelTTF* label = CCRichLabelTTF::create("H[color=ff00ff00][i][b][u]e我[/u][/b][/i][/color]llo [size=20][font=font/Arial Rounded MT Bold.ttf][color=ffffffff]W[/color]orld![/font][/size]", "Helvetica", 30); label->enableStroke(ccBLUE, 0.5f); label->setPosition(ccp(origin.x + visibleSize.width / 2, origin.y + visibleSize.height / 5)); label->enableShadow(CCSizeMake(-10, -10), 0xafffff00, 4); label->setFontFillColor(ccc3(179, 179, 179)); addChild(label); // image tag test // text and other tags between image tag will be ignored // if image path starts with '/', we treat it like an external image. In iOS, it will be mapped to ~/Documents label = CCRichLabelTTF::create("Hello, [image=Images/a.png w=64 h=32 offsety=-32]blo[i]c[/i]ks[/image], [u]Gross[image= w=32 h=48]grossini[/image]ini[/u]\nThis is second line", "Helvetica", 20); label->setPosition(ccp(origin.x + visibleSize.width / 2, origin.y + visibleSize.height * 2 / 5)); addChild(label); // now create a grossini in placeholder place and move it CCRect r = label->getImageBound(1); CCSprite* g = CCSprite::create("Images/grossini.png"); g->setScale(r.size.width / g->getContentSize().width); g->setScale(r.size.height / g->getContentSize().height); g->setAnchorPoint(CCPointZero); g->setPosition(r.origin); label->addChild(g); g->runAction(CCRepeatForever::create(CCSequence::create(CCMoveBy::create(0.5f, ccp(0, 10)), CCMoveBy::create(0.5f, ccp(0, -10)), NULL))); // font tag test label = CCRichLabelTTF::create("H[i][b][u]ell[/u][/b][/i]o[size=20][font=font/Arial Rounded MT Bold.ttf]H[i]ell[/i]o[/font][/size]", "Helvetica", 30); label->setColor(ccc4(0, 0, 255, 255), ccc4(0, 255, 0, 255), ccp(1, 0)); label->setPosition(ccp(origin.x + visibleSize.width / 2, origin.y + visibleSize.height * 3 / 5)); addChild(label); }
CCRichLabelTTF* CCRichLabelTTF::create(const char *string, const char *fontName, float fontSize, const CCSize &dimensions, CCTextAlignment hAlignment, CCVerticalTextAlignment vAlignment) { CCRichLabelTTF *pRet = new CCRichLabelTTF(); if(pRet && pRet->initWithString(string, fontName, fontSize, dimensions, hAlignment, vAlignment)) { pRet->autorelease(); return pRet; } CC_SAFE_DELETE(pRet); return NULL; }
CCRichLabelTTF * CCRichLabelTTF::create() { CCRichLabelTTF * pRet = new CCRichLabelTTF(); if (pRet && pRet->init()) { pRet->autorelease(); } else { CC_SAFE_DELETE(pRet); } return pRet; }
//------------------------------------------------------------------ // // Rich Label // //------------------------------------------------------------------ void CommonRichLabel::onEnter() { CommonDemo::onEnter(); setOpacity(255); setColor(ccRED); CCSize visibleSize = CCDirector::sharedDirector()->getVisibleSize(); CCPoint origin = CCDirector::sharedDirector()->getVisibleOrigin(); CCRichLabelTTF* label = CCRichLabelTTF::create("H[color=ff00ff00]e我[/color]llo [color=ffffffff]W[/color]orld!", "Helvetica", 30); label->enableStroke(ccBLUE, 0.5f); label->setPosition(ccp(origin.x + visibleSize.width / 2, origin.y + visibleSize.height / 5)); label->enableShadow(CCSizeMake(-10, -10), 0xafffff00, 4); label->setFontFillColor(ccc3(179, 179, 179)); addChild(label); label = CCRichLabelTTF::create("H[color=ff00ff00][i][b][u]ell[/u][/b][/i][/color]o[size=20][font=font/Arial Rounded MT Bold.ttf]H[i]ell[/i]o[/font][/size]", "Helvetica", 30); label->setPosition(ccp(origin.x + visibleSize.width / 2, origin.y + visibleSize.height * 2 / 5)); addChild(label); label = CCRichLabelTTF::create("H[i][b][u]ell[/u][/b][/i]o[size=20][font=font/Arial Rounded MT Bold.ttf]H[i]ell[/i]o[/font][/size]", "Helvetica", 30); label->setColor(ccc4(0, 0, 255, 255), ccc4(0, 255, 0, 255), ccp(1, 0)); label->setPosition(ccp(origin.x + visibleSize.width / 2, origin.y + visibleSize.height * 3 / 5)); addChild(label); }
//------------------------------------------------------------------ // // Rich Label (Link Tag) // //------------------------------------------------------------------ void CommonRichLabel2::onEnter() { CommonDemo::onEnter(); setOpacity(255); setColor(ccRED); CCSize visibleSize = CCDirector::sharedDirector()->getVisibleSize(); CCPoint origin = CCDirector::sharedDirector()->getVisibleOrigin(); // label 1 CCRichLabelTTF* label = CCRichLabelTTF::create("This label has a [color=ff0000ff][link bg=3f7f7f7f bg_click=9fffff00]clickable[/link][/color] link, great!", "Helvetica", 20); label->setPosition(ccp(origin.x + visibleSize.width / 2, origin.y + visibleSize.height / 5)); label->setLinkTarget(0, CCCallFunc::create(this, callfunc_selector(CommonRichLabel2::onLinkClicked))); addChild(label); // measure api demo CCLOG("label content: %f, %f", label->getContentSize().width, label->getContentSize().height); CCSize s = CCUtils::measureRichString("This label has a [color=ff0000ff][link bg=3f7f7f7f bg_click=9fffff00]clickable[/link][/color] link, great!", "Helvetica", 20); CCLOG("measure: %f, %f", s.width, s.height); // label 2 label = CCRichLabelTTF::create("Wow! Image[link bg=3f7f7f7f bg_click=9f00ff00] [image=Images/a.png scale=2]\ufffc[/image] [/link]can also be linked!", "Helvetica", 24); label->setPosition(ccp(origin.x + visibleSize.width / 2, origin.y + visibleSize.height * 2 / 5)); label->setLinkTarget(0, CCCallFunc::create(this, callfunc_selector(CommonRichLabel2::onLinkClicked))); addChild(label); // label 3 label = CCRichLabelTTF::create("Link works fine even in [color=ff0000ff][link bg=3f7f7f7f bg_click=9f00ff00]line\nbreak![/link][/color] That's incredible!", "Helvetica", 20); label->setPosition(ccp(origin.x + visibleSize.width / 2, origin.y + visibleSize.height * 3 / 5)); label->setLinkTarget(0, CCCallFunc::create(this, callfunc_selector(CommonRichLabel2::onLinkClicked))); label->enableShadow(CCSizeMake(-10, -10), 0xafffff00, 4); addChild(label); }