【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.   
  4. local spriteTest = cc.Sprite:createWithSpriteFrameName("shuohua00.png")  
  5. spriteTest:setAnchorPoint( 0.5, 0 )  
  6. spriteTest:setPosition( cc.p( display.cx, display.cy/4 ) )  
  7. self:addChild( spriteTest )  
  8.   
  9. local animation = cc.Animation:create()  
  10. for i=1, 13 do  
  11.     -- local frameName = string.format( "shuohua%02d.png", i )  
  12.     local blinkFrame = spriteFrame:getSpriteFrame( string.format( "shuohua%02d.png", i ) )  
  13.     animation:addSpriteFrame( blinkFrame )  
  14. end  
  15. animation:setDelayPerUnit( 0.1 )--设置每帧的播放间隔  
  16. animation:setRestoreOriginalFrame( true )--设置播放完成后是否回归最初状态  
  17. local action = cc.Animate:create(animation)  
  18. spriteTest:runAction( cc.RepeatForever:create( action ) )

将导出的plist文件加载进项目纹理缓存中,文件中集合了帧动画的每帧对应的图片对象,图片命名为有规则的序列。本文是播放一个说话动画,所以图片命名为shuohua00.png、shuohua01.png…

通过spriteFrameCache来将plist纹理加入缓存,再通过纹理创建一个默认的精灵状态。

创建一个animation对象用来存放所有的动画纹理,相当于一个队列,最终的播放顺序会按照animation的添加顺序播放。所以此步很关键,也就是图片的1、2、3、4…命名很关键。

设置好播放间隔之后就差调用播放了,播放动画和播放组合动作一样都是使用runAction,所以将animation对象转换为一个animat动画对象。就可以直接播放了。

你可能感兴趣的:(cocos2dx-lua,3.11.1自学)