文本的加入在quick中被封装在ui类中,它能够创建EditBox。菜单以及文本,文本总得来说能够创建TTF和BMFont两种。

api对于它的说明非常具体。ui.newBMFontLabel(params),參数中

  • text: 要显示的文本
  • font: 字体文件名称
  • align: 文字的水平对齐方式(可选)
  • x, y: 坐标(可选)

所以我们创建一个文本能够使用这种代码,

function MyScene:ctor()
local labelBMFont = ui.newBMFontLabel({
text = "Hello Cocos2dx",
font = "futura-48.fnt",
align = ui.TEXT_ALIGN_CENTER,
x = display.cx,
y = display.cy
})
self:addChild(labelBMFont)
end

效果例如以下,

align參数相当于锚点的作用。默认quick中创建出来的都是靠左,所以常常会用到align = ui.TEXT_ALIGN_CENTER。

注意參数给的名称不能够改动,否则quick认不出參数。就会报错。

既然前面说了quick是对cocos2d-x 原生lua的再封装,咱们就再看看这个newBMFontLabel是怎样实现的。贴一下ui中的代码。

function ui.newBMFontLabel(params)
assert(type(params) == "table",
"[framework.ui] newBMFontLabel() invalid params") local text = tostring(params.text)
local font = params.font
local textAlign = params.align or ui.TEXT_ALIGN_CENTER
local x, y = params.x, params.y
assert(font ~= nil, "ui.newBMFontLabel() - not set font") local label = CCLabelBMFont:create(text, font, kCCLabelAutomaticWidth, textAlign)
if not label then return end if type(x) == "number" and type(y) == "number" then
label:setPosition(x, y)
end if textAlign == ui.TEXT_ALIGN_LEFT then
label:align(display.LEFT_CENTER)
elseif textAlign == ui.TEXT_ALIGN_RIGHT then
label:align(display.RIGHT_CENTER)
else
label:align(display.CENTER)
end return label
end

能够看到还是使用了cocos2dx创建BMFont的方法——CCLabelBMFont:create(text, font, kCCLabelAutomaticWidth, textAlign)。所以假设你认为quick哪个參数看得不爽。你把它改动了,那么创建的时候就能够按自己喜欢的字段来了,当然这是不建议的。

还有一种是TTF。ui.newTTFLabel(params),它可用的參数许多。

  • text: 要显示的文本
  • font: 字体名,假设是非系统自带的 TTF 字体,那么指定为字体文件名称
  • size: 文字尺寸,由于是 TTF 字体。所以能够随意指定尺寸
  • color: 文字颜色(可选),用 ccc3() 指定,默觉得白色
  • align: 文字的水平对齐方式(可选)
  • valign: 文字的垂直对齐方式(可选),仅在指定了 dimensions 參数时有效
  • dimensions: 文字显示对象的尺寸(可选),使用 CCSize() 指定
  • x, y: 坐标(可选)

align 和 valign 參数可用的值:

  • ui.TEXT_ALIGN_LEFT 左对齐
  • ui.TEXT_ALIGN_CENTER 水平居中对齐
  • ui.TEXT_ALIGN_RIGHT 右对齐
  • ui.TEXT_VALIGN_TOP 垂直顶部对齐
  • ui.TEXT_VALIGN_CENTER 垂直居中对齐
  • ui.TEXT_VALIGN_BOTTOM 垂直底部对齐

我们也简单写个

function MyScene:ctor()
local labelTTF = ui.newTTFLabel({
text = "Hello Cocos2dx",
size = 30,
color = ccc3(255, 255, 0),
align = ui.TEXT_ALIGN_CENTER,
x = display.cx,
y = display.cy })
self:addChild(labelTTF) end

效果例如以下,

关于quick对于TTF是怎样实现的源代码我就不贴出来了,大家能够自己翻出来看看。

此外。在api中还提供了两种TTF格式的字体创建,

ui.newTTFLabelWithShadow(params)

ui.newTTFLabelWithOutline(params)

这两个各自是带有阴影和描边參数的TTF字体,cocos2dx中一样提供这个功能,所以在quick里简单知道一下就ok。写个效果出来看看

local labelTTF = ui.newTTFLabelWithOutline({
text = "Hello Cocos2dx",
size = 50,
color = ccc3(255, 0, 0),
align = ui.TEXT_ALIGN_CENTER,
x = display.cx,
y = display.cy,
outlineColor = ccc3(255, 255, 0)
})
self:addChild(labelTTF)

效果例如以下,

label基本就是这样了。原生的另一个Atlas,在游戏中做数字标签还是非经常常使用的~

quick-cocos2d-x游戏开发【4】——加入文本的更多相关文章

  1. iOS cocos2d 2游戏开发实战(第3版)书评

    2013是游戏爆发的一年,手游用户也是飞速暴增.虽然自己不做游戏,但也是时刻了解手机应用开发的新动向.看到CSDN的"写书评得技术图书赢下载分"活动,就申请了一本<iOS c ...

  2. (转载)如何学好iphone游戏开发

    转自:http://www.cnblogs.com/zilongshanren/archive/2011/09/19/2181558.html 自从发布<如何学习iphone游戏开发>到 ...

  3. cocos2d 游戏开发实战

    文章转自:http://uliweb.clkg.org/tutorial/read/40 6   cocos2d 游戏开发实战 6.1   创建cocos2d项目 6.2   cocos2d v3 & ...

  4. 【Cocos2D研究院之游戏开发】

    http://www.xuanyusong.com/archives/category/ios/cocos2d_game 分类目录归档:[Cocos2D研究院之游戏开发]   201211-19 Co ...

  5. Cocos2d-x 3.x版2048游戏开发

    Cocos2d-x 3.x版2048游戏开发 本篇博客给大家介绍怎样高速开发2048这样一款休闲游戏,理解整个2048游戏的开发流程.从本篇博客你将能够学习到下面内容: 这里注明一下,本教程来自极客学 ...

  6. 2、Cocos2dx 3.0游戏开发找小三之引擎简单介绍

    尊重开发人员的劳动成果,转载的时候请务必注明出处:http://blog.csdn.net/haomengzhu/article/details/27094663 引擎简单介绍 Cocos2d-x 的 ...

  7. 今天我看了一个H5游戏EUI的例子,我都快分不清我到底是在用什么语言编译了代码了,作为刚刚学习H5游戏开发的菜鸟只能默默的收集知识

    今天看了一个EUI的demo,也是接触H5游戏开发的第五天了,我想看看我能不能做点什么出来,哎,自己写果然还是有问题的.在看EUI哪一个demo的时候就遇见了一些摇摆不定的问题,我觉得提出来 1.to ...

  8. Egret白鹭H5小游戏开发入门(三)

    前言: 在上一篇文章中着重介绍了H5小游戏开发的起步阶段,如Wing面板的使用,素材的处理,类的说明等等,那么今天主要是涉及到场景的创建,loading的修改等等的代码编写. 对于这一节,我在讲解的过 ...

  9. Html5 Egret游戏开发 成语大挑战(六)游戏界面构建和设计

    本篇将主要讲解游戏界面的构建和设计,会应用到egret.eui的自定义组件,可以很直观的构建一个游戏整体,这里我们仍然只需要使用EgretWing就可以达到目的,本篇可能是篇幅最少的一个,但是涉及自定 ...

  10. HTML5游戏开发进阶指南(亚马逊5星畅销书,教你用HTML5和JavaScript构建游戏!)

    HTML5游戏开发进阶指南(亚马逊星畅销书,教你用HTML5和JavaScript构建游戏!) [印]香卡(Shankar,A.R.)著 谢光磊译 ISBN 978-7-121-21226-0 201 ...

随机推荐

  1. 慎用MonthsBetweent和MonthSpan

    ●function MonthsBetween(const ANow, AThen: TDateTime): Integer; 描述: 根据两个给定的TDateTime类型的参数ANow和AThen, ...

  2. POJ 3321 Apple Tree DFS序+fenwick

    题目大意:有一颗长满苹果的苹果树,有两个操作. 1.询问以一个点为根的子树中有多少个苹果. 2.看看一个点有没有苹果,假设没有苹果.那么那里就立即长出一个苹果(= =!):否则就把那个苹果摘下来. 思 ...

  3. How to initialize a static const map in c++?

    #include <map> using namespace std; struct A{ static map<int,int> create_map() { map< ...

  4. RGB HSV HLS三种色彩模式转换(C语言实现)

    Android项目上处理图像的代码(注释全部去掉) ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 ...

  5. 斐讯K2 V22.X.X.X 新版固件 刷机教程 (开telnet,安装SSH,adbyby,刷breed,华硕Padavan)

    源:http://www.right.com.cn/forum/thread-191833-1-1.html 属于我的上一个帖子的升级版,基本属于无脑操作,点击恢复就可以自动刷好breed,浏览上传新 ...

  6. [计算机基础]URI与URL

    URI : uniform resource identifier统一资源标示符用于指定Web资源的字符串,它定义了Web资源中的各个不同的部分.ex:http://example.org/absol ...

  7. java(样品集成框架spring、spring mvc、spring data jpa、hibernate)

    这是你自己的参考springside集成框架的开源项目.主要的整合spring.spring mvc.spring data jpa.hibernate几个框架,对于这些框架中仍然感觉更舒适sprin ...

  8. Infinite scroll has been called autopagerize, unpaginate, endless pages

    http://www.infinite-scroll.com/ Infinite scroll has been called autopagerize, unpaginate, endless pa ...

  9. vc2008构建和使用libcurl静态库

    1>下载CURL源代码curl-7.26.0.zip 2>用VC2008/2005打开工程curl-7.26.0\lib\libcurl.vcproj,转换下工程并构建,可以直接编译成功! ...

  10. Memcached 群集高可用性(HA)架构

    Memcache本身并不实现集群功能.假设你想使用Memcahce集群需要使用第三方软件或编程来实现自己的设计,这里将被用来memagent实现代理,memagent也被称为magent.我们注意到, ...