quick-cocos2dx-lua之幸运大转盘实现

    xiaoxiao2025-06-24  5

    好久没有用quick引擎开发了,最近又要整quick了,有种熟悉感。

    今天主要记录一下研究了半天的大转盘的实现。

    如图:

    1、主要精华如下:

    local ALLROATE = 360--360度 local num = 10 --转盘角度数据 local zhuanpanData = {     {start = (num-10)*ALLROATE/num + 0, ended = (num-9)*ALLROATE/num},     {start = (num-9)*ALLROATE/num + 1, ended = (num-8)*ALLROATE/num},     {start = (num-8)*ALLROATE/num + 1, ended = (num-7)*ALLROATE/num},     {start = (num-7)*ALLROATE/num + 1, ended = (num-6)*ALLROATE/num},     {start = (num-6)*ALLROATE/num + 1, ended = (num-5)*ALLROATE/num},     {start = (num-5)*ALLROATE/num + 1, ended = (num-4)*ALLROATE/num},     {start = (num-4)*ALLROATE/num + 1, ended = (num-3)*ALLROATE/num},     {start = (num-3)*ALLROATE/num + 1, ended = (num-2)*ALLROATE/num},     {start = (num-2)*ALLROATE/num + 1, ended = (num-1)*ALLROATE/num},     {start = (num-1)*ALLROATE/num + 1, ended = (num-0)*ALLROATE/num}, } local duration  = 5 --转动持续时间 local rotateNum = 5 --转动圈数 local function Act() local targetIdx = 7   --服务器传来的值。 scheduler.performWithDelayGlobal(function(dt)             local targetData = zhuanpanData[targetIdx]             local rotateAngle = - math.random(targetData.start, targetData.ended) - 360 * rotateNum             print("随机角度是:", rotateAngle)             --第二次需要重置坐标点             if lastAngle ~= 0 then             self:rotateSprite(self.panbg, duration, rotateAngle + lastAngle)       else           self:rotateSprite(self.panbg, duration, rotateAngle)     end             lastAngle = -360 - rotateAngle - 360 * rotateNum         end, 0) end

    2、封装转盘的主要method,直接复制调用然后传参数就可以啦,请仔细看参数说明

    -- sprite 精灵 -- time 旋转的时间 -- rotateAngle_ 旋转的角度 local function rotateSprite(sprite, time, rotateAngle_) local action = cc.RotateBy:create(time, rotateAngle_)     local easeAction = cc.EaseCubicActionInOut:create(action)     sprite:runAction(easeAction) end

    如果有更好的实现效果请,留言一同探讨。

    转载请注明原文地址: https://ju.6miu.com/read-1300288.html
    最新回复(0)