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 do
- -- 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动画对象。就可以直接播放了。