cocos2dx lua 三种创建帧动画的方式

使用cocostdio中的帧动画并设置回调

self.node = cc.CSLoader:createNode("plaza/gamePropAnim/bingtong.csb")
self._root:addChild(self.node)
-- 是否反转
if self.data.reverse then
    self.node:getChildByName("Node_1"):setScaleX(-1)
end
-- 播放动画
self.node:setPosition(self.data.staPos.x,self.data.staPos.y)
self.node:runAction(cc.MoveTo:create(0.6,cc.p(self.data.endPos.x + (not self.data.reverse and -110 or 110), self.data.endPos.y + 240)))
self.node:runAction(cc.Sequence:create(cc.ScaleTo:create(0.6,1.5),
cc.CallFunc:create(function()
    local nodeAction = cc.CSLoader:createTimeline("plaza/gamePropAnim/bingtong.csb")
    -- 设置回调
    local eventFrameCall = function(frame)
        local eventName = frame:getEvent()
        if eventName == "end" then
            self.node:removeFromParent()
            self.node = nil
        end
    end
    nodeAction:clearFrameEventCallFunc()
    nodeAction:setFrameEventCallFunc(eventFrameCall)
    nodeAction:play("end", false)
    nodeAction:gotoFrameAndPlay(0, 130, false)
    self.node:runAction(nodeAction)
end)))

-- 说明:
end: cocostdio帧动画中的帧事件
gotoFrameAndPlay(开始帧, 结束帧, 是否循环播放)


使用图片文件创建动画

    local scale = 1
    local offsetX,offsetY = 0, 0
    -- 加载图片
    local animation = cc.Animation:create()
    for i=1,18 do
        animation:addSpriteFrameWithFile("zjh/cardType/baozi/baozi"..i..".png")
    end
    -- 播放间隔
    animation:setDelayPerUnit(0.1)
    -- 播放完成回归初始状态
--    animation:setRestoreOriginalFrame(true)
    -- 创建精灵
    local sprite = cc.Sprite:create("zjh/cardType/baozi/baozi1.png")
    sprite:setPosition(cc.p(x+offsetX,y+offsetY))
    sprite:addTo(self._root)
    sprite:setScale(scale)
    -- 播放动画
    local action = cc.Animate:create(animation)
    sprite:runAction(cc.Sequence:create(
    action,cc.CallFunc:create(function()
        sprite:removeFromParent()
        sprite = nil
    end)))


使用plist创建动画


    local scale = 1
    local offsetX,offsetY = 0, 0
    local spriteFrame = cc.SpriteFrameCache:getInstance()
    -- 添加plist
    spriteFrame:addSpriteFrames("texture/gamePropAnim/plistAnim/baotui.plist")
    -- 创建精灵
    local sprite = cc.Sprite:createWithSpriteFrameName("baodatui0001.png")
    sprite:setPosition(cc.p(self.data.staPos.x+offsetX, self.data.staPos.y+offsetY))
    sprite:setScale(scale)
    sprite:addTo(self._root)
    -- 加载图片
    local animation = cc.Animation:create()
    for i=1, 12 do
        animation:addSpriteFrame(spriteFrame:getSpriteFrame("baodatui00"..(i<10 and "0" or "")..i..".png"))
    end
    -- 播放间隔
    animation:setDelayPerUnit(0.1)
    -- 播放完成回归初始状态
--    animation:setRestoreOriginalFrame(true)
    local action = cc.Animate:create(animation)
    sprite:runAction(cc.Sequence:create(
    action,cc.CallFunc:create(function()
        sprite:removeFromParent()
        sprite = nil
    end)))

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值