cocos2dx 動畫是個非常奇妙的東西~~。 這裡看到的是一個物體,在運動的過程中會不斷地翻轉的過程。
兩個動畫一起來~~
以下的代碼中涉及到:CCAnimation(補間動畫 ) CCAnimate(動畫) CCDelayTime(延遲動作) CCFadeTo(設定透明态度) CCSequence(動作序列) CCSpawn(讓精靈的若幹個動畫同一時候運作) CCRepeateForever(無限循環) CCCallFuncN(瞬時動作中 node回調函數) CCMoveTo (移動動作)
這裡是用lua來寫的,不是用c++寫的。 lua來寫這個真的是非常好。非常友善。
不多說,直接看代碼。當中這些類的使用方法網上一搜一大把。
local winSize = CCDirector:shareDirector():getWinSize()
local layer = CCLayerColor:create(ccc4(0, 0, 0, 111), winSize.winSize, winSize.height)
--載入運動過程中的動畫 使用檔案載入 texturepacker
--這樣的載入方式網上一大把,不知道原理的自行google
local cache = CCSpriteFrameCache:sharedSpriteFrameCache():addSpriteFramesWithFile("plist檔案")
local array = CCArray:create()
for i = 1, n do --這裡n是幀的數量
local path = string.format("%d.png", i)
local name = CCSpriteFrameCache:sharedSpriteFrameCache():spriteFrameByName(path)
array:addObject(name)
end
local animation = CCAnimation:createWithSpriteFrames(array)
--也能夠用table來設計幾個動
--[[
local info =
{
{ pointx = 1, pointy = 2},
{ pointx = 1, pointy = 2}
}
local j = 0
for j = 1, #info do
local info1 = info[j]
info1.pointx
]]
--運動動畫
for j = 1, 10 do --幾個在動
--剛剛設定的幀動畫
animation:setDelayPerUnit((math.random(5, 10)) / 70)
animation:setRestoreOriginalFrame(true)
local animate = CCAnimate:create(animation)
animate:setTag(0)
local sprite = CCSprite:create("圖檔檔案, 這裡是跟plist檔案名稱一樣的名字喲")
local offset = j * math.random(-1, 1) --這裡-1。 1 就是中間切割 向兩側産生
sprite:setPosition(ccp(x + offset, y)) -- 這裡的x, y 你自定義
sprite:setScale(1.2)
layer:addChile(sprite)
local arraymove = CCArray:create()
arraymove:addObject(CCDelayTime:create(j * 0.1)) --依據須要自己設定延時
local moveto = CCMoveTo:create(0.8, ccp(x + offset, y)) --跟上面的對照 x, y自己設定
local arrayFade = CCArray:create()
local delayFade = CCDelayTime:create(0.8)
local fade = CCFadeTo:create(0.05, 0) --0.05秒内。 變為不透明
arrayFade:addObject(delayFade)
arrayFade:addObject(fade)
local actionFade = CCSequence:create(arrayFade)
local spawn = CCSpawn:createWithTwoActions(moveto, actionFade) --讓精靈的若幹個動畫同一時候運作
arraymove:addObject(spawn)
local action = CCSequence:create(arraymove)
sprite:runAction(CCRepeateForever:create(animate))
sprite:runAction(action)
--延遲銷毀動作
local scene = CCDirector:sharedDirector():getRunningScene()
scene:addChile(layer, 100)
local arrayend = CCArray:create()
arrayend:addObject(CCDelayTime:create(2)) --延遲時間
arrayend:addObject(CCFadeTo:create(0.1, 0))
arrayend:addObject(CCCallFuncN:create(removeLayer)) --這裡removeLayer是一個函數
local endAction = CCSequence:create(arrayend)
layer:runAction(endAction)
function removeLayer(n)
n = tolua.cast(n, "CCNode")
n:removeFromParentAndCleanup(true)
本文轉自mfrbuaa部落格園部落格,原文連結:http://www.cnblogs.com/mfrbuaa/p/5353690.html,如需轉載請自行聯系原作者