1 CCLabel

A 标签CCLabelTTF

CCLabelTTF * ttf = CCLabelTTF::create("LabelTTF", "Courier", 100);

第一个参数为,要显示的字符串,第二个能数位字体,第三个参数为大小。

优点:简单易操作,无需任何额外的资源

缺点:由于它的运行原理,是先将字符转化为图片纹理,然后渲染至屏幕。所以不适合于变动的文字。易于静态的显示。

B CCLabelAtlas

CCLabelAtlas * atlas = CCLabelAtlas::create(“123.45”,”font/fps_images.png”,16,32,’.’);

第一个参数为要显示的字符串,第二个参数为图片,第三个参数每一个字符的长度,第四个为每一个字符的高度,第五个位第一个字符的ASSIC。

优点:将等宽,等高的字符,放到一张大图中去,然后通过要显示的字符的ASSIC去找相应的图片渲染到屏幕中去,这样一次加载,多次取用,相比TTF效率要高。

缺点:素材需要依赖于美工,显示内容局限性大。

C CCLabelBMFont

CCLabelBMFont * bm = CCLabelBMFont::create(“ABCD”,”fonts/bitmapFontTest.fnt”);

CC_DLL  CC_DLL CCLabelBMFont 继承自CCSpriteBatchNode,所以本身采用了CCSpriteBatchNode的优化功能。第一个参数为要显示的字符串,第二个参数为要加载图片的资源文件。CCLabelBMFont中的每一个字符都是一个已加载到CCSpriteBatchNode中的CCSprite。可以通过接口取出。这种实现方式既实现了优化的效果,也更灵活。

优点:显示字体多样,内部完成优化效率高。

缺点:需要依赖美工制作fnt文件。

CCLabelBMFont * bm = CCLabelBMFont::create("Good Year","fonts/bitmapFontTest.fnt");

bm->setPosition(ccp(winSize.width/2,winSize.height/2));

addChild(bm);

bm->setTag(BM);

CCArray * array = bm->getChildren();

CCSprite * G = (CCSprite*)array->objectAtIndex(0);

CCSprite * G = (CCSprite *)bm->getChildByTag(0);

T10Label.h

#ifndef __T10Label_H__

#define __T10Label_H__

#include "cocos2d.h"

USING_NS_CC;

class T10Label :public CCLayer

{

public:

static CCScene * scene();

CREATE_FUNC(T10Label);

bool init();

enum LABEL

{

TTF, ATLAS, BM

};

void mySchedule(float dt);

};

#endif

T10Label.cpp

#include "T10Label.h"

#include "AppMacros.h"

CCScene *T10Label::scene()

{

CCScene * scene = CCScene::create();

T10Label * layer = T10Label::create();

scene->addChild(layer);

return scene;

}

bool T10Label::init()

{

CCLayer::init();

CCLabelBMFont * bm = CCLabelBMFont::create("GOOD YEAR", "fonts/bitmapFontTest.fnt");

//下面的方式是将bm存入层中

addChild(bm);

//从bm中取出各个元素

CCArray * array = bm->getChildren();

CCObject * obj;

//将元素随机放在不同的位置

CCARRAY_FOREACH(array, obj)

{

CCSprite * spr = (CCSprite *)obj;

spr->setPosition(ccp(CCRANDOM_0_1() * 480, CCRANDOM_0_1() * 320));

}

//循环将精灵放在不同的位置

CCARRAY_FOREACH(array,obj)

{

static float x = 100;

static float y = 100;

//将(CCSprite *)强转

CCSprite * spr = (CCSprite *)obj;

CCMoveTo * to = CCMoveTo::create(2, ccp(x += 30, y));

spr->runAction(to);

}

return true;

}

void T10Label::mySchedule(float dt)

{

static float count = 0;

count += dt;

CCString * str = CCString::createWithFormat("%d", (int)count);

//CCLabelTTF * ttf = (CCLabelTTF *)getChildByTag(TTF);

//ttf->setString(str->getCString());

CCLabelAtlas * atlas = (CCLabelAtlas*)getChildByTag(ATLAS);

atlas->setString(str->getCString());

}

运行结果:

当代码是如下是:

#include "T10Label.h"

#include "AppMacros.h"

CCScene *T10Label::scene()

{

CCScene * scene = CCScene::create();

T10Label * layer = T10Label::create();

scene->addChild(layer);

return scene;

}

bool T10Label::init()

{

CCLayer::init();

CCLabelTTF * ttf = CCLabelTTF::create("Score", "Courier", 20);

ttf->setPosition(ccp(winSize.width / 2, winSize.height / 2));

addChild(ttf);

//设置字体的颜色

ttf->setFontSize(50);

//设置字体的名称

ttf->setFontName("Courier New");

//设置字符串

ttf->setString("xxxx");

ttf->setFontFillColor(ccc3(255,0,0),true);

ttf->setTag(TTF);

return true;

}

void T10Label::mySchedule(float dt)

{

static float count = 0;

count += dt;

CCString * str = CCString::createWithFormat("%d", (int)count);

//CCLabelTTF * ttf = (CCLabelTTF *)getChildByTag(TTF);

//ttf->setString(str->getCString());

CCLabelAtlas * atlas = (CCLabelAtlas*)getChildByTag(ATLAS);

atlas->setString(str->getCString());

}

运行结果:

当代码改成如下的时:

#include "T10Label.h"

#include "AppMacros.h"

CCScene *T10Label::scene()

{

CCScene * scene = CCScene::create();

T10Label * layer = T10Label::create();

scene->addChild(layer);

return scene;

}

bool T10Label::init()

{

CCLayer::init();

CCSize size = CCDirector::sharedDirector()->getWinSize();

CCLabelAtlas *atlas = CCLabelAtlas::create("012345678923", "fonts/Labelatlas.png", 31, 60,'0');

atlas->setPosition(ccp(100,100));

atlas->setColor(ccc3(255, 0, 0));

this->addChild(atlas, 1);

return true;

}

void T10Label::mySchedule(float dt)

{

static float count = 0;

count += dt;

CCString * str = CCString::createWithFormat("%d", (int)count);

//CCLabelTTF * ttf = (CCLabelTTF *)getChildByTag(TTF);

//ttf->setString(str->getCString());

CCLabelAtlas * atlas = (CCLabelAtlas*)getChildByTag(ATLAS);

atlas->setString(str->getCString());

}

运行结果:

2.标签CCLabelTTF,CCLabelAtlas,CCLabelBMFont相关推荐

  1. cocos中添加显示文字的三种方式(CCLabelTTF 、CCLabelBMFont 和CCLabelAtlas)

    CCLabelTTF CCLabelTTF 每次调用 setString (即改变文字)的时候,一个新的OPENGL 纹理将会被创建..这意味着setString 和创建一个新的标签一样慢. 这个类使 ...

  2. 初探使用iOS 7 Sprite Kit与Cocos2d开发游戏的对比(一家之言)

    初探使用iOS 7 Sprite Kit与Cocos2d开发游戏的对比 初探使用iOS 7 Sprite Kit与Cocos2d开发游戏的对比 发布于:2013-07-18 11:00阅读数:1984 ...

  3. 初探使用iOS 7 Sprite Kit与Cocos2d开发游戏的对比

    前言 iOS7 beta发布后,大部分开发者和用户的注意力都集中在了iOS 7的全新UI交互设计界面上.一直负责硬件工业设计的Jony Ive首次全面负责苹果的软件和硬件设计工作,自然要把他自己的设计 ...

  4. bmf mysql_cocos2dx添加文本的三种方法及适用情况CCLabelTTF,CCLabelBMFon

    1.CCLabelTTF CCLabelTTF适合于一次性创建文本后基本上不再改变其显示信息的情况. 因为CCLabelTTF可以使用setString()函数改变文字内容,而这个时候会创建一个新的o ...

  5. cocos2d-x学习之添加显示文字

    cocos2d 中添加显示文字的三种方式(CCLabelTTF .CCLabelBMFont 和CCLabelAtlas) 在 cocos2d 中有三个类可以在层或精灵中添加文字: CCLabelTT ...

  6. 疯狂ios之cocos2d中的文本

    在游戏当中经常需要添加标签和文本对此cocos2d提供了强大的文本渲染功能.cocos2d支持所有内置的iOS字体以及一些TrueType字体. 在cocos2d中文本渲染功能通常由两个类实现CCLa ...

  7. COcos2d-X 中文API

    本文来自http://blog.csdn.net/runaying ,引用必须注明出处! COcos2d-X 中文API 温馨提醒:使用二维码扫描软件,就可以在手机上访问我的博客啦!另外大家可以访问另 ...

  8. cocos API 中文

    本文来自http://blog.csdn.net/runaying ,引用必须注明出处! COcos2d-X 中文API 温馨提醒:使用二维码扫描软件,就可以在手机上访问我的博客啦!另外大家可以访问另 ...

  9. cocos2d-x学习知识点记录

    环境搭建 http://4137613.blog.51cto.com/4127613/751149 Cocos2d-x初探,HelloWorld解读 http://www.cnblogs.com/Ke ...

最新文章

  1. 不称职Leader的10个特征,看看你中几条?
  2. mysql 执行顺序 别名_sql语句的执行顺序和别名问题
  3. golang copy函数
  4. shiro框架_Shiro安全框架(下)
  5. WatchOS系统开发大全(6)-WKInterfaceLabel
  6. 程序员过关斩将--要想获取我的用户信息,就得按照规矩来
  7. JavaWeb:tomcat服务器安装总结及Http协议
  8. Vue+ElementUI项目使用webpack输出MPA【华为云分享】
  9. idea环境下lombok插件的安装和使用
  10. EasyPR--开发详解
  11. 第二次作业(个人作业):软件案例分析
  12. 卷积神经网络识别车辆(自建+迁移学习)
  13. 北风:信息差有多重要?你是怎么被割韭菜的?
  14. codecademy SQL 编程系列一Introduction
  15. Canny 边缘检测设置自动阈值
  16. usart hmi(串口屏)常用命令
  17. 无法访问此页面,确保web地址正确?
  18. C#使用表达式树不能包含动态操作,使用反射的方式来实现T类型
  19. CaptureScreenshot捕捉画面截图截屏
  20. 为App签名(为apk签名)

热门文章

  1. OpenCASCADE :VTK集成服务(VIS) 之使用高级 API
  2. OpenCASCADE:Modeling Algorithms模块标准拓扑对象
  3. 使用 Boost.Lambda 库创建并存储在 Boost.Function 对象中的函子中使用 Boost.Units 的数量、单位和绝对类型
  4. boost::intrusive::list_member_hook用法的测试程序
  5. boost::hana::slice_c用法的测试程序
  6. boost::geometry::detail::calculate_point_order用法的测试程序
  7. boost::function_types::is_member_pointer用法的测试程序
  8. boost::core模块实现fn地址
  9. Boost:正则表达式的实例
  10. ITK:按标量乘以图像