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