【Cocos2dx-lua 3.11.1】plist製作、播放幀動畫
阿新 • • 發佈:2019-02-18
1、plist製作:
本人使用工具TexturePacker,其中有對應cocos2dx引擎的預設打包方案,用起來是得心應手。 開啟工具後會看到上方標題中有個Add smart folder做程式的,這點簡單的英文肯定是要能看懂的,就把你相應的幀動畫的檔案選中新增進去就可以了,加進去後,會生成相應的預覽圖,再點選右上的Publish sprite sheet
自己選擇匯出目錄,就能在對應目錄看到匯出的plist檔案和預覽圖了,加入到工程中就可以了。 2、幀動畫:
廢話不多說,先上程式碼。
-
local spriteFrame = cc.SpriteFrameCache:getInstance( )
- spriteFrame:addSpriteFrames( "speak.plist" )
- local spriteTest = cc.Sprite:createWithSpriteFrameName("shuohua00.png")
- spriteTest:setAnchorPoint( 0.5, 0 )
- spriteTest:setPosition( cc.p( display.cx, display.cy/4 ) )
- self:addChild( spriteTest )
- local animation = cc.Animation:create()
-
for i=1, 13
- -- local frameName = string.format( "shuohua%02d.png", i )
- local blinkFrame = spriteFrame:getSpriteFrame( string.format( "shuohua%02d.png", i ) )
- animation:addSpriteFrame( blinkFrame )
- end
- animation:setDelayPerUnit( 0.1 )--設定每幀的播放間隔
-
animation:setRestoreOriginalFrame( true )--設定播放完成後是否迴歸最初狀態
- local action = cc.Animate:create(animation)
- spriteTest:runAction( cc.RepeatForever:create( action ) )
將匯出的plist檔案載入進專案紋理快取中,檔案中集合了幀動畫的每幀對應的圖片物件,圖片命名為有規則的序列。本文是播放一個說話動畫,所以圖片命名為shuohua00.png、shuohua01.png…
通過spriteFrameCache來將plist紋理加入快取,再通過紋理建立一個預設的精靈狀態。
建立一個animation物件用來存放所有的動畫紋理,相當於一個佇列,最終的播放順序會按照animation的新增順序播放。所以此步很關鍵,也就是圖片的1、2、3、4…命名很關鍵。
設定好播放間隔之後就差呼叫播放了,播放動畫和播放組合動作一樣都是使用runAction,所以將animation物件轉換為一個animat動畫物件。就可以直接播放了。