lua对多个精灵执行一系列动作,延时失效

本文介绍了一个使用Lua编写的发牌动画实现过程,该过程通过cc.Director和cc.Sprite等类来实现从中间开始一张张发牌的效果。文章还讨论了如何调整发牌速度并解决动画同步问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

function MainPlayerCards:sendCards()
    local winSize   = cc.Director:getInstance():getWinSize()
    local nSize = #self.handCard
    for i =1,nSize do
        if self.handCard[i] then
            self.handCard[i]:removeFromParent(true)
            self.handCard[i] = nil
        end
    end
    local function sendOneCard(pNode)
        local tag = pNode:getTag()
        pNode:removeFromParent(true)
        local sp = cc.Sprite:createWithSpriteFrameName(string.format("l_%d.png",self.handCard[tag]))
        sp:setPosition(cc.p(self:CardPos(tag)))
        table.insert(self.handCard, sp)
        self:addChild(sp)
    end
    for i=1,nSize do
        local pBackSp = cc.Sprite:createWithSpriteFrameName("l_back.png")
        pBackSp:setPosition(cc.p(winSize.width/2,winSize.height/2))
        pBackSp:setTag(i)
        self:addChild(pBackSp,nSize -i)
        local arrayAction ={}
        table.insert(arrayAction, cc.DelayTime:create((i)*0.2))
        table.insert(arrayAction, cc.MoveTo:create(0.2, cc.p(self:CardPos(i))))
        table.insert(arrayAction, cc.CallFunc:create(sendOneCard))
        pBackSp:runAction(cc.Sequence:create(arrayAction))
    end
end

上述为:从中间开始,一张一张进行发牌动画的创建
如果table.insert(arrayAction, cc.DelayTime:create((i)*0.2))中,将时间改为常量,并没有按想像的执行完延时后,在进行下一次for循环,而是所有牌的动画一次性执行完毕,并且很多时候,我们看不到,误以为moveto动作没执行,另外哪位有关于table.insert(arrayAction, cc.CallFunc:create(sendOneCard))中cc.CallFunc中函数传参的资料,希望赐教!

转载于:https://www.cnblogs.com/ebchange/p/7122604.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值