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

前端之家收集整理的这篇文章主要介绍了quick-cocos2d-x游戏开发【4】——添加文本前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

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


api对于它的说明很详细,ui.newBMFontLabel(params),参数中

  • text: 要显示的文本
  • font: 字体文件
  • align: 文字的水平对齐方式(可选)
  • x,y: 坐标(可选)
所以我们创建一个文本可以使用这样的代码

[plain] view plain copy
  1. functionMyScene:ctor()
  2. locallabelBMFont=ui.newBMFontLabel({
  3. text="HelloCocos2dx",
  4. font="futura-48.fnt",
  5. align=ui.TEXT_ALIGN_CENTER,248)"> x=display.cx,108); list-style:decimal-leading-zero outside; color:inherit; line-height:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> y=display.cy
  6. })
  7. self:addChild(labelBMFont)
  8. end

效果如下,



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

注意参数给的名称不可以修改,否则quick认不出参数,就会报错。既然前面说了quick是对cocos2d-x 原生lua的再封装,咱们就再看看这个newBMFontLabel是如何实现的,贴一下ui中的代码

    functionui.newBMFontLabel(params)
  1. assert(type(params)=="table",108); list-style:decimal-leading-zero outside; color:inherit; line-height:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> "[framework.ui]newBMFontLabel()invalidparams")
  2. localtext=tostring(params.text)
  3. localfont=params.font
  4. localtextAlign=params.alignorui.TEXT_ALIGN_CENTER
  5. localx,y=params.x,params.y
  6. assert(font~=nil,"ui.newBMFontLabel()-notsetfont")
  7. locallabel=CCLabelBMFont:create(text,font,kCCLabelAutomaticWidth,textAlign)
  8. ifnotlabelthenreturnend
  9. iftype(x)=="number"andtype(y)=="number"then
  10. label:setPosition(x,y)
  11. end
  12. iftextAlign==ui.TEXT_ALIGN_LEFTthen
  13. label:align(display.LEFT_CENTER)
  14. elseiftextAlign==ui.TEXT_ALIGN_RIGHTthen
  15. label:align(display.RIGHT_CENTER)
  16. else
  17. label:align(display.CENTER)
  18. returnlabel
  19. end


可以看到还是使用了cocos2dx创建BMFont的方法——CCLabelBMFont:create(text,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 垂直底部对齐
我们也简单写个

    locallabelTTF=ui.newTTFLabel({
  1. size=30,108); list-style:decimal-leading-zero outside; color:inherit; line-height:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> color=ccc3(255,0),248)"> align=ui.TEXT_ALIGN_CENTER,108); list-style:decimal-leading-zero outside; color:inherit; line-height:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> x=display.cx,248)"> y=display.cy
  2. self:addChild(labelTTF)
  3. end

效果如下,



关于quick对于TTF是如何实现的源码我就不贴出来了,大家可以自己翻出来看看。


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

ui.newTTFLabelWithShadow(params)

ui.newTTFLabelWithOutline(params)

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

    locallabelTTF=ui.newTTFLabelWithOutline({
  1. text="HelloCocos2dx",108); list-style:decimal-leading-zero outside; color:inherit; line-height:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> size=50,248)"> color=ccc3(255,108); list-style:decimal-leading-zero outside; color:inherit; line-height:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> y=display.cy,248)"> outlineColor=ccc3(255,0)
  2. })
  3. self:addChild(labelTTF)

效果如下,



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

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