Cocos2d-x 3.2 Lua樣本FontTest(字型測試),cocos2d-xfonttest

來源:互聯網
上載者:User

Cocos2d-x 3.2 Lua樣本FontTest(字型測試),cocos2d-xfonttest

Cocos2d-x 3.2 Lua樣本FontTest(字型測試)


  本篇部落格介紹Cocos2d-x 3.2中Lua測試專案中的FontTest例子,主要使用了字型檔來建立我們想要的字型樣式:


第一個參數為文本,第二參數為ttf字型檔,第三個參數為字型大小,第四個參數為塊大小,第五個參數為文本橫向對齊,第六個慘為文本縱向對齊。


例子:








範例程式碼:(註:單獨檔案不可運行,具體可參考lua-tests)

--4個標籤的Taglocal  kTagLabel1 = 0local  kTagLabel2 = 1local  kTagLabel3 = 2local  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 = 1local 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)endlocal isFirst = truelocal originCreateLayer = createTestLayerlocal 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 retendfunction 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 sceneend



VS2010裡面建立cocos2D-x項目時,選擇Select Lua support: Support Lua(打鉤),產生後報錯,

一些庫檔案沒正確載入,找到相應的庫檔案粘貼到相應位置就好了。別忘記確認下該檔案是否有許可權。
 
cocos2d-x怎與Lua想結合使用 具體點

cocos2d-x帶有lua引擎了。看看這個。雖然是英語,但是很容易懂。
Cocos2d-x NEW Lua Engine README
Main features
Support autorelease CCObject object.
Call Lua function from C++ (local, global, closure), avoid memory leaks.
Add CCNode:setPosition(x, y), CCNode::getPosition() huge performance boost.
Remove needless class and functions from tolua++ .pkg files, improved performance.
CCMenuItem events handler.
CCNode onEnter/onExit events handler.
CCLayer touch & multi-touches events handler.
看看這2個串連。
www.cocos2d-x.org/...uments
Scripting and Translating between Programming Languages
 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.