关闭

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

105人阅读 评论(0) 收藏 举报

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


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


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


例子效果图:








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

[javascript] view plaincopy
  1. --4个标签的Tag  
  2. local  kTagLabel1 = 0  
  3. local  kTagLabel2 = 1  
  4. local  kTagLabel3 = 2  
  5. local  kTagLabel4 = 3  
  6.   
  7. -- 字体列表  
  8. local  fontList = {  
  9.   "fonts/A Damn Mess.ttf",  
  10.   "fonts/Abberancy.ttf",  
  11.   "fonts/Abduction.ttf",  
  12.   "fonts/Paint Boy.ttf",  
  13.   "fonts/Schwarzwald Regular.ttf",  
  14.   "fonts/Scissor Cuts.ttf"  
  15. }  
  16.   
  17.   
  18. local fontCount = table.getn(fontList) -- 获得表元素个数  
  19. cclog("font count = "..fontCount)  
  20.   
  21. local vAlignIdx = 1  
  22. local verticalAlignment = {  
  23.   cc.VERTICAL_TEXT_ALIGNMENT_TOP,  -- 对齐顶部  
  24.   cc.VERTICAL_TEXT_ALIGNMENT_CENTER, -- 居中对齐  
  25.   cc.VERTICAL_TEXT_ALIGNMENT_BOTTOM, -- 底部对齐  
  26. }  
  27.   
  28. local vAlignCount = table.getn(verticalAlignment)  
  29.   
  30. --[[  
  31. ===============  
  32. 显示字体  
  33. ===============  
  34. ]]--  
  35. local function showFont(ret, pFont)  
  36.   
  37.   cclog("vAlignIdx="..vAlignIdx)  
  38.   local s = cc.Director:getInstance():getWinSize()-- 窗口大小  
  39.   
  40.   local blockSize = cc.size(s.width/3, 200)-- 块大小  
  41.   local fontSize = 26--字体大小  
  42.   
  43.   -- 根据Tag移除子节点  
  44.   ret:removeChildByTag(kTagLabel1, true)  
  45.   ret:removeChildByTag(kTagLabel2, true)  
  46.   ret:removeChildByTag(kTagLabel3, true)  
  47.   ret:removeChildByTag(kTagLabel4, true)  
  48.   
  49.   -- static Label* createWithTTF(const std::string & text, const std::string & fontFile, float fontSize, const Size & dimensions = Size::ZERO,  
  50.   --TextHAlignment hAlignment = TextHAlignment::LEFT,TextVAlignment vAlignment = TextVAlignment::TOP)  
  51.     
  52.   -- 第一个参数为文本,第二个参数为字体样式,第三个参数为字体大小,第四个参数为块大小,第五个参数为文本横向对齐,第六个参数为文本纵向对齐  
  53.   local top = cc.Label:createWithTTF(pFont, pFont, 24)  
  54.   local left = cc.Label:createWithTTF("alignment left", pFont, fontSize,  
  55.     blockSize, cc.TEXT_ALIGNMENT_LEFT, verticalAlignment[vAlignIdx])  
  56.   local center = cc.Label:createWithTTF("alignment center", pFont, fontSize,  
  57.     blockSize, cc.TEXT_ALIGNMENT_CENTER, verticalAlignment[vAlignIdx])  
  58.   local right = cc.Label:createWithTTF("alignment right", pFont, fontSize,  
  59.     blockSize, cc.TEXT_ALIGNMENT_RIGHT, verticalAlignment[vAlignIdx])  
  60.   
  61.   
  62.   -- 创建颜色层,第一个参数是颜色,第二个参数为宽度,第三个参数为高度  
  63.   local leftColor = cc.LayerColor:create(cc.c4b(100, 100, 100, 255), blockSize.width, blockSize.height)  
  64.   local centerColor = cc.LayerColor:create(cc.c4b(200, 100, 100, 255), blockSize.width, blockSize.height)  
  65.   local rightColor = cc.LayerColor:create(cc.c4b(100, 100, 200, 255), blockSize.width, blockSize.height)  
  66.   
  67.   -- 忽略锚点对位置的影响 ,如果为true,锚点为(0,0)  
  68.   leftColor:ignoreAnchorPointForPosition(false)  
  69.   centerColor:ignoreAnchorPointForPosition(false)  
  70.   rightColor:ignoreAnchorPointForPosition(false)  
  71.   
  72.   top:setAnchorPoint(cc.p(0.5, 1)) -- 设置锚点(0.5,1)  
  73.   left:setAnchorPoint(cc.p(0,0.5))  
  74.   leftColor:setAnchorPoint(cc.p(0,0.5))  
  75.   center:setAnchorPoint(cc.p(0,0.5))  
  76.   centerColor:setAnchorPoint(cc.p(0,0.5))  
  77.   right:setAnchorPoint(cc.p(0,0.5))  
  78.   rightColor:setAnchorPoint(cc.p(0,0.5))  
  79.   
  80.   top:setPosition(cc.p(s.width/2,s.height-20)) -- 设置显示位置  
  81.   left:setPosition(cc.p(0,s.height/2))  
  82.   leftColor:setPosition(left:getPosition())  
  83.   center:setPosition(cc.p(blockSize.width, s.height/2))  
  84.   centerColor:setPosition(center:getPosition())  
  85.   right:setPosition(cc.p(blockSize.width*2, s.height/2))  
  86.   rightColor:setPosition(right:getPosition())  
  87.   
  88.   ret:addChild(leftColor, -1)  
  89.   ret:addChild(left, 0, kTagLabel1)  
  90.   ret:addChild(rightColor, -1)  
  91.   ret:addChild(right, 0, kTagLabel2)  
  92.   ret:addChild(centerColor, -1)  
  93.   ret:addChild(center, 0, kTagLabel3)  
  94.   ret:addChild(top, 0, kTagLabel4)  
  95. end  
  96.   
  97. local isFirst = true  
  98. local originCreateLayer = createTestLayer  
  99. local function createTestLayer()  
  100.   if isFirst == false then  
  101.     if Helper.index == 1 then  
  102.       vAlignIdx =  vAlignIdx % vAlignCount + 1  
  103.     end  
  104.   else  
  105.     isFirst = false  
  106.   end  
  107.   
  108.   local ret = originCreateLayer("")  
  109.   showFont(ret, fontList[Helper.index])  
  110.   return ret  
  111. end  
  112.   
  113. function FontTestMain()  
  114.   cclog("FontTestMain")  
  115.   Helper.index = 1  
  116.   vAlignIdx = 1  
  117.   local scene = cc.Scene:create()  
  118.   -- 创建方法表  
  119.   Helper.createFunctionTable = {  
  120.     createTestLayer,  
  121.     createTestLayer,  
  122.     createTestLayer,  
  123.     createTestLayer,  
  124.     createTestLayer,  
  125.     createTestLayer  
  126.   }  
  127.   scene:addChild(createTestLayer()) -- 添加测试层  
  128.   scene:addChild(CreateBackMenuItem())--添加后退按钮  
  129.   return scene  
  130. end  
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:823次
    • 积分:16
    • 等级:
    • 排名:千里之外
    • 原创:0篇
    • 转载:5篇
    • 译文:0篇
    • 评论:0条
    文章存档