您的位置:首页 > 移动开发 > Cocos引擎

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

2016-08-15 01:01 991 查看
好久没有用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

如果有更好的实现效果请,留言一同探讨。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐