cocos2d+lua实现帧动画播放

使用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)
--下面同上

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值