Cocos2dx之文字显示

前端之家收集整理的这篇文章主要介绍了Cocos2dx之文字显示前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

C++之旅 QQ群:201704374

伸手党的救星,1T资料等你来战



一、显示文字的控件

1、CCLabel

2、CCLabelTTF

3、CCLabelAtlas


二、文字显示实现

1、CCLabel

  1. #ifndef __T07CCLabel_H__
  2. #define __T07CCLabel_H__
  3. #include "cocos2d.h"
  4. USING_NS_CC;
  5.  
  6. class T07CCLabel : public CCLayer
  7. {
  8. public:
  9. static CCScene* scene();
  10. CREATE_FUNC(T07CCLabel);
  11. bool init();
  12. bool ccTouchBegan(CCTouch *pTouch,CCEvent *pEvent);
  13. void ccTouchMoved(CCTouch *pTouch,CCEvent *pEvent);
  14. };
  15.  
  16. #endif

  1. #include "T07CCLabel.h"
  2.  
  3. static const char* _font[] = {
  4. "AppleGothic","HiraKakuProN-W6","HiraKakuProN-W3","MarkerFelt-Thin","STHeitiK-Medium","STHeitiK-Light","TimesNewRomanPSMT","Helvetica-Oblique","Helvetica-BoldOblique","Helvetica","Helvetica-Bold","TimesNewRomanPS-BoldMT","TimesNewRomanPS-BoldItalicMT","TimesNewRomanPS-ItalicMT","Verdana-Bold","Verdana-BoldItalic","Verdana","Verdana-Italic","Georgia-Bold","Georgia","Georgia-BoldItalic","Georgia-Italic","ArialRoundedMTBold","TrebuchetMS-Italic","TrebuchetMS","Trebuchet-BoldItalic","TrebuchetMS-Bold","STHeitiTC-Light","STHeitiTC-Medium","GeezaPro-Bold","GeezaPro","Courier","Courier-BoldOblique","Courier-Oblique","Courier-Bold","ArialMT","Arial-BoldMT","Arial-BoldItalicMT","Arial-ItalicMT","STHeitiJ-Medium","STHeitiJ-Light","ArialHebrew","ArialHebrew-Bold","CourierNewPS-BoldMT","CourierNewPS-BoldItalicMT","CourierNewPSMT","Thonburi-Bold","AmericanTypewriter","AmericanTypewriter-Bold","STHeitiSC-Medium","STHeitiSC-Light","HelveticaNeue","HelveticaNeue-Bold","Zapfino"
  5. };
  6. CCScene* T07CCLabel::scene()
  7. {
  8. CCScene* scene = CCScene::create();
  9. T07CCLabel* layer = T07CCLabel::create();
  10. scene->addChild(layer);
  11. return scene;
  12. }
  13.  
  14. bool T07CCLabel::init()
  15. {
  16. CCLayer::init();
  17. CCSize winSize = CCDirector::sharedDirector()->getWinSize();
  18. #if 0
  19. CCLabelTTF* ttf = CCLabelTTF::create("Content","Arial",24);
  20. addChild(ttf);
  21. ttf->setPosition(ccp(winSize.width/2,winSize.height/2));
  22. #endif
  23.  
  24. int count = sizeof(_font)/sizeof(*_font);
  25. for (int i =0; i < count; i++)
  26. {
  27. CCLabelTTF* ttf = CCLabelTTF::create(_font[i],_font[i],24);
  28. addChild(ttf);
  29. ttf->setPosition(ccp(winSize.width/2,i * 24 + 12));
  30. }
  31.  
  32. setTouchEnabled(true);
  33. setTouchMode(kCCTouchesOneByOne);
  34. return true;
  35. }
  36. bool T07CCLabel::ccTouchBegan(CCTouch *pTouch,CCEvent *pEvent)
  37. {
  38. return true;
  39. }
  40. void T07CCLabel::ccTouchMoved(CCTouch *pTouch,CCEvent *pEvent)
  41. {
  42. this->setPositionY(getPositionY() + pTouch->getDelta().y);
  43. }

2、CCLabelTTF

3、CCLabelAtlas

  1. #ifndef __T08CCLabelAtlas_H__
  2. #define __T08CCLabelAtlas_H__
  3.  
  4. // CCLabelTTF CCLabelAtlas CCLabelBMFont
  5.  
  6. #include "cocos2d.h"
  7. USING_NS_CC;
  8.  
  9. class T08CCLabelAtlas : public CCLayer
  10. {
  11. public:
  12. static CCScene* scene();
  13. CREATE_FUNC(T08CCLabelAtlas);
  14. bool init();
  15.  
  16. };
  17.  
  18. #endif
  1. #include "T08CCLabelAtlas.h"
  2.  
  3.  
  4. CCScene* T08CCLabelAtlas::scene()
  5. {
  6. CCScene* s = CCScene::create();
  7. T08CCLabelAtlas* layer = T08CCLabelAtlas::create();
  8. s->addChild(layer);
  9. return s;
  10. }
  11.  
  12. bool T08CCLabelAtlas::init()
  13. {
  14. CCLayer::init();
  15.  
  16. CCSize winSize = CCDirector::sharedDirector()->getWinSize();
  17.  
  18. CCLabelAtlas* atlas = CCLabelAtlas::create("123abb123","labelatlasimg.png",24,32,'0');
  19. addChild(atlas);
  20. atlas->setPosition(ccp(winSize.width / 2,winSize.height / 2));
  21.  
  22. // CCSprite* sp = CCSprite::create("CloseNormal.png");
  23. // addChild(sp);
  24. // sp->setPosition(ccp(winSize.width / 2,winSize.height / 2));
  25.  
  26. return true;
  27. }


三、应用场合

1、CCLabel

固定不变是文字显示

2、CCLabelTTF

每个文字可以是精灵,经行精灵操作

3、CCLabelAtlas

分数显示

猜你在找的Cocos2d-x相关文章