由于公司使用的quick-cocos2d-x引擎的版本是V2.1.4,比較老而且沒有任何說明文檔隙疚,所以很多函數(shù)都要看引擎源碼才知道壤追。有些函數(shù)要試一試才能找到正確的寫法,真是挺蛋疼的甚淡。不過認(rèn)真去學(xué)還是會有收獲滴大诸。
今天“捉蝦”許久,學(xué)的東西不多贯卦,不說廢話资柔,直接把今天所學(xué)呈上來撵割。
1贿堰、此版本下創(chuàng)建精靈的兩種方式
方式一:傳統(tǒng)方式
sprite1 = CCSprite:create("image/sanli.jpeg")
sprite1:setPosition(display.cx + 400, display.cy - 200)
self:addChild(sprite1, 5)
方式二:display方式
local background = display.newSprite("image/background.png", display.cx, display.cy) self:addChild(background)
顯然display方式比較簡潔
2、創(chuàng)建label的兩種寫法啡彬,跟創(chuàng)建精靈類似:
方式一:
local label1 = CCLabelTTF:create("Hello", "Arial", 32)
label1:setPosition(display.cx + 400, display.cy - 80)
self:addChild(label1, 6)
方式二:
local label = ui.newTTFLabel({
text = "Hello, World",
size = 32,
x = display.cx,
y = display.cy,
align = ui.TEXT_ALIGN_CENTER --整齊豎排
})
self:addChild(label, 7)
3羹与、游戲調(diào)度的三種方式:
--游戲調(diào)度
local function update(dt)
local x, y = label1:getPosition()
label1:setPosition(x - 2, y + 1)
end
--游戲開始調(diào)度
--這是一種調(diào)度方法-------------------------------------------------------------
sch = CCDirector:sharedDirector():getScheduler()
sch:scheduleScriptFunc(update, 1/60.0, false) --update是要執(zhí)行的函數(shù),中間是執(zhí)行間隔,最后為是否暫停
--這是第二種調(diào)度方法------------------------------------------------------------
self:scheduleUpdateWithPriorityLua(update, 0)--第二個參數(shù)是一個優(yōu)先級,值越小越先執(zhí)行
--這種調(diào)度方式對應(yīng)的停止調(diào)度為:self:unscheduleUpdate()
--這是第三種調(diào)度方式-------------------------------------------------------------
local? scheduler = require("framework.scheduler")
scheduler.scheduleGlobal(update, 1.0 / 60) --第二個參數(shù)是執(zhí)行間隔
--第一種和第三種本質(zhì)上是一樣的庶灿,用于游戲中計時很好用纵搁。但是我不知道如果停止調(diào)度 =。=
4往踢、等待一段設(shè)定時間之后調(diào)用某一函數(shù):
self:performWithDelay(function()
?????? print("-----------等待3秒之后打印了這句話---------------")
end, 3.0)
5腾誉、創(chuàng)建文本菜單
local startItem = ui.newTTFLabelMenuItem({
text = "Start",
size = 30,
aligh = ui.TEXT_ALIGN_CENTER,
listener = function ()
print("The start item is touched")
self.player:attack()
end,
x = display.cx,
y = display.cy + 50,
})
local endItem = ui.newTTFLabelMenuItem({
text = "End",
size = 30,
aligh = ui.TEXT_ALIGN_CENTER,
listener = function ()
print("The end item is touched")
self.player:dead()
end,
x = display.cx,
y = display.cy - 50,
})
local menu = ui.newMenu({startItem, endItem})
self:addChild(menu)
6、創(chuàng)建觸摸層:
function MainScene:addTouchLayer()
local function onTouch(eventName, x, y)
if eventName == "began" then
self.player:walkTo({x=x,y=y})
self:unscheduleUpdate()? ? ? --------------------------停止調(diào)度
end
end
--創(chuàng)建觸摸層
self.layerTouch = display.newLayer()
--添加事件監(jiān)聽器
self.layerTouch:addTouchEventListener(function(event, x, y)
return onTouch(event, x, y)
end, false)
self.layerTouch:setTouchEnabled(true)
self.layerTouch:setPosition(ccp(0,0))
self.layerTouch:setContentSize(CCSizeMake(display.width, display.height))
self:addChild(self.layerTouch)
end
6、創(chuàng)建和播放動畫
--創(chuàng)建并播放角色攻擊動畫
function Player:attack()
--創(chuàng)建動畫
local frames = display.newFrames("player1-2" .. "-%d.png", 1, 4)
local animation = display.newAnimation(frames, 0.2)
--local frame = display.newSpriteFrame("player1-1-1.png")
transition.playAnimationOnce(self, animation)
end
今天學(xué)的大致就是以上這些利职,寫得比較亂趣效,沒有邏輯。有空再系統(tǒng)寫猪贪。從標(biāo)簽跷敬、菜單、精靈热押、層西傀、場景、動畫和特效到用戶事件楞黄、音樂音效池凄、粒子系統(tǒng)、瓦片地圖和物理引擎鬼廓,再到數(shù)據(jù)持久化肿仑、網(wǎng)絡(luò)通信和性能優(yōu)化等知識,將會大致地系統(tǒng)地梳理一遍碎税。今天就先到這吧尤慰。