好久没有用quick引擎开发了,最近又要整quick了,有种熟悉感。
今天主要记录一下研究了半天的大转盘的实现。
如图:
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
如果有更好的实现效果请,留言一同探讨。