cocos2d+lua实现帧动画播放

守給你的承諾、 提交于 2020-04-06 19:46:00

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




易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!