使用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)
--下面同上
来源:oschina
链接:https://my.oschina.net/u/561462/blog/146991