2.标签CCLabelTTF,CCLabelAtlas,CCLabelBMFont
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相关推荐
- cocos中添加显示文字的三种方式(CCLabelTTF 、CCLabelBMFont 和CCLabelAtlas)
CCLabelTTF CCLabelTTF 每次调用 setString (即改变文字)的时候,一个新的OPENGL 纹理将会被创建..这意味着setString 和创建一个新的标签一样慢. 这个类使 ...
- 初探使用iOS 7 Sprite Kit与Cocos2d开发游戏的对比(一家之言)
初探使用iOS 7 Sprite Kit与Cocos2d开发游戏的对比 初探使用iOS 7 Sprite Kit与Cocos2d开发游戏的对比 发布于:2013-07-18 11:00阅读数:1984 ...
- 初探使用iOS 7 Sprite Kit与Cocos2d开发游戏的对比
前言 iOS7 beta发布后,大部分开发者和用户的注意力都集中在了iOS 7的全新UI交互设计界面上.一直负责硬件工业设计的Jony Ive首次全面负责苹果的软件和硬件设计工作,自然要把他自己的设计 ...
- bmf mysql_cocos2dx添加文本的三种方法及适用情况CCLabelTTF,CCLabelBMFon
1.CCLabelTTF CCLabelTTF适合于一次性创建文本后基本上不再改变其显示信息的情况. 因为CCLabelTTF可以使用setString()函数改变文字内容,而这个时候会创建一个新的o ...
- cocos2d-x学习之添加显示文字
cocos2d 中添加显示文字的三种方式(CCLabelTTF .CCLabelBMFont 和CCLabelAtlas) 在 cocos2d 中有三个类可以在层或精灵中添加文字: CCLabelTT ...
- 疯狂ios之cocos2d中的文本
在游戏当中经常需要添加标签和文本对此cocos2d提供了强大的文本渲染功能.cocos2d支持所有内置的iOS字体以及一些TrueType字体. 在cocos2d中文本渲染功能通常由两个类实现CCLa ...
- COcos2d-X 中文API
本文来自http://blog.csdn.net/runaying ,引用必须注明出处! COcos2d-X 中文API 温馨提醒:使用二维码扫描软件,就可以在手机上访问我的博客啦!另外大家可以访问另 ...
- cocos API 中文
本文来自http://blog.csdn.net/runaying ,引用必须注明出处! COcos2d-X 中文API 温馨提醒:使用二维码扫描软件,就可以在手机上访问我的博客啦!另外大家可以访问另 ...
- cocos2d-x学习知识点记录
环境搭建 http://4137613.blog.51cto.com/4127613/751149 Cocos2d-x初探,HelloWorld解读 http://www.cnblogs.com/Ke ...
最新文章
- 不称职Leader的10个特征,看看你中几条?
- mysql 执行顺序 别名_sql语句的执行顺序和别名问题
- golang copy函数
- shiro框架_Shiro安全框架(下)
- WatchOS系统开发大全(6)-WKInterfaceLabel
- 程序员过关斩将--要想获取我的用户信息,就得按照规矩来
- JavaWeb:tomcat服务器安装总结及Http协议
- Vue+ElementUI项目使用webpack输出MPA【华为云分享】
- idea环境下lombok插件的安装和使用
- EasyPR--开发详解
- 第二次作业(个人作业):软件案例分析
- 卷积神经网络识别车辆(自建+迁移学习)
- 北风:信息差有多重要?你是怎么被割韭菜的?
- codecademy SQL 编程系列一Introduction
- Canny 边缘检测设置自动阈值
- usart hmi(串口屏)常用命令
- 无法访问此页面,确保web地址正确?
- C#使用表达式树不能包含动态操作,使用反射的方式来实现T类型
- CaptureScreenshot捕捉画面截图截屏
- 为App签名(为apk签名)
热门文章
- OpenCASCADE :VTK集成服务(VIS) 之使用高级 API
- OpenCASCADE:Modeling Algorithms模块标准拓扑对象
- 使用 Boost.Lambda 库创建并存储在 Boost.Function 对象中的函子中使用 Boost.Units 的数量、单位和绝对类型
- boost::intrusive::list_member_hook用法的测试程序
- boost::hana::slice_c用法的测试程序
- boost::geometry::detail::calculate_point_order用法的测试程序
- boost::function_types::is_member_pointer用法的测试程序
- boost::core模块实现fn地址
- Boost:正则表达式的实例
- ITK:按标量乘以图像