1. 程式人生 > >【Cocos2dx-lua 3.11.1】plist製作、播放幀動畫

【Cocos2dx-lua 3.11.1】plist製作、播放幀動畫

1、plist製作:

本人使用工具TexturePacker,其中有對應cocos2dx引擎的預設打包方案,用起來是得心應手。 開啟工具後會看到上方標題中有個Add smart folder
做程式的,這點簡單的英文肯定是要能看懂的,就把你相應的幀動畫的檔案選中新增進去就可以了,加進去後,會生成相應的預覽圖,再點選右上的Publish sprite sheet
自己選擇匯出目錄,就能在對應目錄看到匯出的plist檔案和預覽圖了,加入到工程中就可以了。 2、幀動畫:

廢話不多說,先上程式碼。

  1. local spriteFrame = cc.SpriteFrameCache:getInstance( )  
  2. spriteFrame:addSpriteFrames( "speak.plist" )  
  3. local spriteTest = cc.Sprite:createWithSpriteFrameName("shuohua00.png")  
  4. spriteTest:setAnchorPoint( 0.5, 0 )  
  5. spriteTest:setPosition( cc.p( display.cx, display.cy/4 ) )  
  6. self:addChild( spriteTest )  
  7. local animation = cc.Animation:create()  
  8. for i=1, 13 
    do
  9.     -- local frameName = string.format( "shuohua%02d.png", i )  
  10.     local blinkFrame = spriteFrame:getSpriteFrame( string.format( "shuohua%02d.png", i ) )  
  11.     animation:addSpriteFrame( blinkFrame )  
  12. end  
  13. animation:setDelayPerUnit( 0.1 )--設定每幀的播放間隔  
  14. animation:setRestoreOriginalFrame( true )--設定播放完成後是否迴歸最初狀態  
  15. local action = cc.Animate:create(animation)  
  16. spriteTest:runAction( cc.RepeatForever:create( action ) )

將匯出的plist檔案載入進專案紋理快取中,檔案中集合了幀動畫的每幀對應的圖片物件,圖片命名為有規則的序列。本文是播放一個說話動畫,所以圖片命名為shuohua00.png、shuohua01.png…

通過spriteFrameCache來將plist紋理加入快取,再通過紋理建立一個預設的精靈狀態。

建立一個animation物件用來存放所有的動畫紋理,相當於一個佇列,最終的播放順序會按照animation的新增順序播放。所以此步很關鍵,也就是圖片的1、2、3、4…命名很關鍵。

設定好播放間隔之後就差呼叫播放了,播放動畫和播放組合動作一樣都是使用runAction,所以將animation物件轉換為一個animat動畫物件。就可以直接播放了。