天天看点

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)))

继续阅读