`
weiyinchao88
  • 浏览: 1234267 次
文章分类
社区版块
存档分类
最新评论

Cocos2d-x 3.2 Lua示例FontTest(字体测试)

 
阅读更多

Cocos2d-x 3.2 Lua示例FontTest(字体测试)


本篇博客介绍Cocos2d-x 3.2中Lua测试项目中的FontTest例子,主要使用了字体文件来创建我们想要的字体样式:


第一个参数为文本,第二参数为ttf字体文件,第三个参数为字体大小,第四个参数为块大小,第五个参数为文本横向对齐方式,第六个惨为文本纵向对齐方式。


例子效果图:








示例代码:(注:单独文件不可运行,具体可参考lua-tests)

--4个标签的Tag
local  kTagLabel1 = 0
local  kTagLabel2 = 1
local  kTagLabel3 = 2
local  kTagLabel4 = 3

-- 字体列表
local  fontList = {
  "fonts/A Damn Mess.ttf",
  "fonts/Abberancy.ttf",
  "fonts/Abduction.ttf",
  "fonts/Paint Boy.ttf",
  "fonts/Schwarzwald Regular.ttf",
  "fonts/Scissor Cuts.ttf"
}


local fontCount = table.getn(fontList) -- 获得表元素个数
cclog("font count = "..fontCount)

local vAlignIdx = 1
local verticalAlignment = {
  cc.VERTICAL_TEXT_ALIGNMENT_TOP,  -- 对齐顶部
  cc.VERTICAL_TEXT_ALIGNMENT_CENTER, -- 居中对齐
  cc.VERTICAL_TEXT_ALIGNMENT_BOTTOM, -- 底部对齐
}

local vAlignCount = table.getn(verticalAlignment)

--[[
===============
显示字体
===============
]]--
local function showFont(ret, pFont)

  cclog("vAlignIdx="..vAlignIdx)
  local s = cc.Director:getInstance():getWinSize()-- 窗口大小

  local blockSize = cc.size(s.width/3, 200)-- 块大小
  local fontSize = 26--字体大小

  -- 根据Tag移除子节点
  ret:removeChildByTag(kTagLabel1, true)
  ret:removeChildByTag(kTagLabel2, true)
  ret:removeChildByTag(kTagLabel3, true)
  ret:removeChildByTag(kTagLabel4, true)

  -- static Label* createWithTTF(const std::string & text, const std::string & fontFile, float fontSize, const Size & dimensions = Size::ZERO,
  --TextHAlignment hAlignment = TextHAlignment::LEFT,TextVAlignment vAlignment = TextVAlignment::TOP)
  
  -- 第一个参数为文本,第二个参数为字体样式,第三个参数为字体大小,第四个参数为块大小,第五个参数为文本横向对齐,第六个参数为文本纵向对齐
  local top = cc.Label:createWithTTF(pFont, pFont, 24)
  local left = cc.Label:createWithTTF("alignment left", pFont, fontSize,
    blockSize, cc.TEXT_ALIGNMENT_LEFT, verticalAlignment[vAlignIdx])
  local center = cc.Label:createWithTTF("alignment center", pFont, fontSize,
    blockSize, cc.TEXT_ALIGNMENT_CENTER, verticalAlignment[vAlignIdx])
  local right = cc.Label:createWithTTF("alignment right", pFont, fontSize,
    blockSize, cc.TEXT_ALIGNMENT_RIGHT, verticalAlignment[vAlignIdx])


  -- 创建颜色层,第一个参数是颜色,第二个参数为宽度,第三个参数为高度
  local leftColor = cc.LayerColor:create(cc.c4b(100, 100, 100, 255), blockSize.width, blockSize.height)
  local centerColor = cc.LayerColor:create(cc.c4b(200, 100, 100, 255), blockSize.width, blockSize.height)
  local rightColor = cc.LayerColor:create(cc.c4b(100, 100, 200, 255), blockSize.width, blockSize.height)

  -- 忽略锚点对位置的影响 ,如果为true,锚点为(0,0)
  leftColor:ignoreAnchorPointForPosition(false)
  centerColor:ignoreAnchorPointForPosition(false)
  rightColor:ignoreAnchorPointForPosition(false)

  top:setAnchorPoint(cc.p(0.5, 1)) -- 设置锚点(0.5,1)
  left:setAnchorPoint(cc.p(0,0.5))
  leftColor:setAnchorPoint(cc.p(0,0.5))
  center:setAnchorPoint(cc.p(0,0.5))
  centerColor:setAnchorPoint(cc.p(0,0.5))
  right:setAnchorPoint(cc.p(0,0.5))
  rightColor:setAnchorPoint(cc.p(0,0.5))

  top:setPosition(cc.p(s.width/2,s.height-20)) -- 设置显示位置
  left:setPosition(cc.p(0,s.height/2))
  leftColor:setPosition(left:getPosition())
  center:setPosition(cc.p(blockSize.width, s.height/2))
  centerColor:setPosition(center:getPosition())
  right:setPosition(cc.p(blockSize.width*2, s.height/2))
  rightColor:setPosition(right:getPosition())

  ret:addChild(leftColor, -1)
  ret:addChild(left, 0, kTagLabel1)
  ret:addChild(rightColor, -1)
  ret:addChild(right, 0, kTagLabel2)
  ret:addChild(centerColor, -1)
  ret:addChild(center, 0, kTagLabel3)
  ret:addChild(top, 0, kTagLabel4)
end

local isFirst = true
local originCreateLayer = createTestLayer
local function createTestLayer()
  if isFirst == false then
    if Helper.index == 1 then
      vAlignIdx =  vAlignIdx % vAlignCount + 1
    end
  else
    isFirst = false
  end

  local ret = originCreateLayer("")
  showFont(ret, fontList[Helper.index])
  return ret
end

function FontTestMain()
  cclog("FontTestMain")
  Helper.index = 1
  vAlignIdx = 1
  local scene = cc.Scene:create()
  -- 创建方法表
  Helper.createFunctionTable = {
    createTestLayer,
    createTestLayer,
    createTestLayer,
    createTestLayer,
    createTestLayer,
    createTestLayer
  }
  scene:addChild(createTestLayer()) -- 添加测试层
  scene:addChild(CreateBackMenuItem())--添加后退按钮
  return scene
end


分享到:
评论

相关推荐

    Cocos2d-x实战_Lua卷 _第2版

    《Cocos2d-x实战_Lua卷_第2版》是一本专为游戏开发者准备的指南,主要聚焦于使用Cocos2d-x框架与Lua语言进行游戏开发。Cocos2d-x是一个开源的游戏开发框架,它允许开发者用C++、Lua或者JavaScript编写游戏,并且可以...

    cocos2d-x+lua游戏demo源码

    【cocos2d-x+lua游戏demo源码】是一个基于cocos2d-x游戏引擎和lua脚本语言的游戏示例项目。cocos2d-x是一个跨平台的2D游戏开发框架,广泛应用于移动设备,如iOS和Android。lua是一种轻量级的、面向过程的编程语言,...

    cocos2D-lua 核心编程内置代码

    在“Cocos2d-x之Lua核心编程(第二版)_配套代码”中,我们可以找到一系列的示例和代码,这些代码涵盖了Cocos2d-lua的核心功能和编程技巧。 一、Cocos2d-lua简介 Cocos2d-lua是Cocos2d-x的一个扩展,它允许开发者使用...

    关东升_Cocos2d-x实战 Lua卷

    根据提供的文件标题、描述、标签以及部分内容,我们可以总结出与“关东升_Cocos2d-x实战 Lua卷”相关的IT知识点。以下是对这些知识点的详细阐述: ### 关于《Cocos2d-x实战 Lua卷》 #### 1. Cocos2d-x简介 Cocos2d...

    cocos2d-x 动画工具 Flash2Cocos2d-x 1.3

    在压缩包文件"jyinkailej-Flash2Cocos2d-x-8c0deff"中,可能包含了Flash2Cocos2d-x工具的源码、文档、示例项目和其他相关资源,供开发者学习和使用。这些资源可以帮助开发者深入理解如何使用该工具,并进行实际的...

    cocos2d-x-3.2.zip

    《cocos2d-x 3.2:经典游戏开发框架深度解析》 cocos2d-x 是一个跨平台的游戏开发框架,它基于C++,同时提供了Lua和JavaScript的绑定,让开发者可以方便地在多种操作系统上创建2D游戏、演示程序和其他图形/交互式...

    Cocos2d-x实战C++卷关东升著完整版pdf

    Cocos2d-x基于C++,但也支持Lua和JavaScript,但本书主要关注C++的使用。C++作为一门强大的系统级编程语言,提供了面向对象的特性,使得游戏开发中的对象管理和性能优化更为高效。读者需要理解C++的基本语法、类与...

    Cocos2d-x实战 JS卷 Cocos2d-JS开发

    Cocos2d-x框架基于C++,同时提供了Lua和JavaScript的绑定,使得开发者可以根据自己的喜好选择编程语言。JS卷特别针对JavaScript开发者,详细介绍了如何利用Cocos2d-JS进行游戏开发,涵盖了从基础概念到高级技术的...

    cocos2d-x与lua

    基本步骤包括下载cocos2d-x的源代码并编译出支持Lua脚本的可执行文件,然后在该环境下进行Lua脚本的编写、修改与测试。环境搭建包括修改配置文件、设置脚本搜索路径以及管理资源文件等关键操作。 知识点六:iOS平台...

    Cocos2d-x学习笔记

    - 学习脚本语言:虽然Cocos2d-x支持多语言开发,但了解JavaScript、Lua等脚本语言,可以快速实现游戏功能和逻辑。 Cocos2d-x框架除了Windows平台外,还支持iOS、Android、Mac OS X、Web等平台,初学者在掌握了...

    cocos2dx lua核心编程(第二版)配套代码

    《Cocos2d-x之Lua核心编程(第二版)》配套代码是一份极其重要的学习资源,旨在帮助开发者深入理解和熟练运用Cocos2d-x游戏引擎与Lua语言进行游戏开发。Cocos2d-x是一个跨平台的游戏开发框架,而Lua则是一种轻量级的...

    cocos2d-x 案例开发大全 第二章(源码)

    《cocos2d-x案例开发大全》第二章的源码主要涵盖了使用cocos2d-x进行游戏开发的各种实践技巧和示例。cocos2d-x是一个开源的游戏开发框架,基于C++,支持跨平台,包括iOS、Android、Windows等多个操作系统。本章的...

    Cocos2d-x实战++Lua卷.pdf

    根据提供的文件信息,本文将重点围绕“Cocos2d-x实战++Lua卷”这一主题进行深入探讨,并结合描述部分给出的知识点,详细阐述Cocos2d-x与Lua在游戏开发中的应用。 ### Cocos2d-x简介 Cocos2d-x是一款开源的游戏引擎...

    Cocos2d-x demo程序

    Cocos2d-x 是一个广泛使用的开源游戏开发框架,它基于C++,并提供了Python、Lua等语言的绑定,使得开发者能够用多种编程语言来创建2D和3D游戏。这个" Cocos2d-x demo程序 "是作者使用Cocos2d-x编写的示例项目,用于...

    cocos2d-lua整合到ios工程.zip

    在iOS平台上开发游戏时,有时候会使用到Cocos2d-x框架,而为了实现更高效、更便捷的编程,开发者可能会选择使用Lua作为脚本语言。"cocos2d-lua整合到ios工程.zip"这个压缩包文件提供了一个将Cocos2d-lua集成到原生...

    cocos2d-1.0.1-x-0.10.0

    5. **资源管理**:Cocos2d-x 包含了图片、音频、字体等资源的加载和管理功能,简化了资源的生命周期管理。 6. **性能优化**:通过纹理 atlases 和批处理技术,提高了图像渲染的效率,减少了内存占用。 7. **脚本...

    瘸腿蛤蟆笔记39-cocos2d-x-3.2 Box2d物理引擎自由落体代码

    在本篇中,我们将深入探讨使用Cocos2d-x 3.2框架集成Box2D物理引擎实现自由落体效果的编程技术。Cocos2d-x是一个广泛使用的开源游戏开发框架,它支持多种平台,包括iOS、Android以及桌面系统。Box2D是一个强大的2D...

    Cocos2d-X游戏源码大合集.rar

    Cocos2d-X是一款强大的开源跨平台2D游戏开发框架,它基于C++,并提供了JavaScript和Lua等多种脚本语言接口。这个“Cocos2d-X游戏源码大合集.rar”文件显然包含了大约三十个使用Cocos2d-X开发的游戏实例源代码,对于...

    cocos2d-x 3.x游戏开发实战光盘

    《cocos2d-x 3.x游戏开发实战光盘》是一个深入探讨cocos2d-x 3.x游戏引擎开发的资源集合,旨在帮助开发者通过实际案例掌握这一强大的2D游戏开发工具。cocos2d-x是一款开源的游戏开发框架,基于C++,广泛应用于跨平台...

    Cocos2d-x实战:Lua卷(第2版)书籍代码

    这是书籍 Cocos2d-x实战:Lua卷(第2版)的代码,关东升老师的,这里分享出来。除了章节的小示例代码外,还有一个《迷失航线》的游戏示例代码。这是一个下载地址。

Global site tag (gtag.js) - Google Analytics