cocos2d+lua實現幀動畫播放

使用Cocos2d播放幀動畫的方法有兩種:

先來介紹一下流程:
1.得到動畫的每一幀的數組FrameArray

2.將幀動畫數組包裝成Animation對象

3.將Animation對象轉化爲可以播放的Action對象

4.使用Sprite來播放Action

第一種:使用TexturePicture來壓縮圖,用CCSpriteFrameCache來加載

--建立一個Cache來加載解壓出的圖片
local frameCache = CCSpriteFrameCache:create()
frameCache:addSpriteFrameWithFile("abc.plist","abc.png")
local frameArr = CCArray:createWithCapacity(圖片總數)
--建立一個數組來粗放得到的幀
for j=0,圖片總數減一 do
local framePath = string.format("abc.%5dpng",j)
--將每個幀圖片轉換成幀Frame
local frame = frameCache:spriteFrameByName(framePath)
frameArr.addObject(frame)
end

--array 中已經有了Frame了,下來需要將其生成爲Animation對象
local animation = CCAnimation:createWithSpriteFrames(frameArr)
--有了animation後下來要將其變爲可執行的Action
local action = CCSequence:createWithTwoActions(CCAnimate:create(animation),CCCallFunc:create(function() callBack end))
--有了Action下來需要在屏幕上播放它,因此需要一個載體來給它提供一個塊屏幕上的位置來播放,我們這裏就用一個空白的Sprite來搞定
local animSprite = CreateBlankCCSprite()
animSprirte:setPosition(x,y)
--一切就緒,開始播放,因爲播放的是一個Sequence動畫所以,會先播放第一個完成後會執行回調函數
animSprite:runAction(action)

--上述的action爲一個動畫組合,它會順序執行執行完動畫後會去執行回調函數

第二種:分別加載每一幀的圖片來生成幀動畫

--定義幀數組
local frameArr = CCArray:createWithCapacity(幀的個數)
--將每一幀的圖片加入
for j=0,圖片個數-1 do
local framePath = string.format("abc_%d.png",j)
local frame = CCSpriteFrameCache:sharedSpriteFrameCache():spriteFrameByName(framePath) 
end
--好,通過上述操作得到了frame 數組了,下來得到Animation
local animation = CCAnimation:createWithSpriteFrames(frameArr)
--下面同上

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章