quick-cocos2d-x游戏开发【4】——加入文本[通俗易懂]

quick-cocos2d-x游戏开发【4】——加入文本

大家好,又见面了,我是全栈君。

文本的加入在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

效果例如以下,

quick-cocos2d-x游戏开发【4】——加入文本[通俗易懂]

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-cocos2d-x游戏开发【4】——加入文本[通俗易懂]

关于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)

效果例如以下,

quick-cocos2d-x游戏开发【4】——加入文本[通俗易懂]

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/116595.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • wing是什么_完全二叉树的深度

    wing是什么_完全二叉树的深度设一个 n 个节点的二叉树 tree 的中序遍历为(1,2,3,…,n),其中数字 1,2,3,…,n 为节点编号。每个节点都有一个分数(均为正整数),记第 i 个节点的分数为 di,tree 及它的每个子树都有一个加分,任一棵子树 subtree(也包含 tree 本身)的加分计算方法如下:subtree的左子树的加分 × subtree的右子树的加分 + subtree的根的分数若某个子树为空,规定其加分为 1。叶子的加分就是叶节点本身的分数,不考虑它的空子树。试求一棵符合中序遍历为(1,2,

  • 特征选择方法之信息增益

    特征选择方法之信息增益

  • 此视频无法播放0xc00d36c4_视频播放失败代码-30

    此视频无法播放0xc00d36c4_视频播放失败代码-30相信很多用户都遇到过视频无法播放的问题。比如将重要视频从旧电脑拷到U盘上,使用另一台电脑播放时,提示视频播放错误代码0xc00d36c4,不支持该视频播放。其实,视频无法播放的问题是很常见的,不少用户在电脑上连接相机或者手机后播放视频,也会提示0xc00d36c4。出现这样的问题要怎么解决,怎么才能修复该视频文件使其正常播放?播放MP4格式视频显示错误代码0xc00d36c4的情况大多数情况下,…

  • php 2021永久激活码(最新序列号破解)「建议收藏」

    php 2021永久激活码(最新序列号破解),https://javaforall.cn/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

  • opacity属性时css中专门用来指定透明度的一个属性[通俗易懂]

    opacity属性时css中专门用来指定透明度的一个属性[通俗易懂]css3之前,在样式中指定的颜色值只能为RGB颜色值,并且只能通过opacity属性来设置元素的透明度。CSS3中增加了3种颜色值-RGBA颜色值,HSL颜色值及HSLA颜色值,并且允许通过对RGBA颜色值和HSLA颜色值设定alpha通道的方法来更加容易地实现将半透明文字与图像互相重叠的效果。alpha通道与opacity属性的区别opacity属性时css中

  • present continuous_representative和representation

    present continuous_representative和representationeXtremeComponents指南JeffJohnston版本1.0.0本文档允许在遵守以下两条原则的条件下被使用和传播:1)不能凭借本文档索取任何费用2)以任何方式(印刷物或电子版)使用和传播时本文档时,必须包含本版权申明(更新中…)TableofContents定制FilterCell

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号