我正在研究一个涉及时钟的项目,以及一个 set_alarm 机制,该机制通过拖动连接到时钟中心的旋转指针(时钟是经典的模拟指针,而不是数字)来工作,因此通过旋转指针(设置警报)您可以设置警报。这是来源:
local function rotateObj2(event)
local t = event.target
local phase = event.phase
if (phase == "began") then
display.getCurrentStage():setFocus( t )
t.isFocus = true
-- Store initial position of finger
t.x1 = event.x
t.y1 = event.y
elseif t.isFocus then
if (phase == "moved") then
animateAlarm = true
t.x2 = event.x
t.y2 = event.y
angle1 = 180/math.pi * math.atan2(t.y1 - t.y , t.x1 - t.x)
angle2 = 180/math.pi * math.atan2(t.y2 - t.y , t.x2 - t.x)
print("angle1 = "..angle1)
rotationAmt = angle1 - angle2
--rotate it
t.rotation = t.rotation - rotationAmt
print ("t.rotation = "..t.rotation)
t.x1 = t.x2
t.y1 = t.y2
alarm.rotation = t.rotation
setAlarm.rotation = t.rotation
print ("setAlarm.rotation = "..t.rotation)
if(alarm.rotation >=0)then
local hourValue = math.floor(t.rotation/30)
local minuteValue = math.floor(t.rotation*2)
local hour = hourValue
local minute = minuteValue
if(minuteValue>=720 and minuteValue<780)then
minute = minuteValue-720
elseif(minuteValue>=660 and minuteValue<720)then
minute = minuteValue-660
elseif(minuteValue>=600 and minuteValue<660)then
minute = minuteValue-600
elseif(minuteValue>=540 and minuteValue<600)then
minute = minuteValue-540
elseif(minuteValue>=480 and minuteValue<540)then
minute = minuteValue-480
elseif(minuteValue>=420 and minuteValue<480)then
minute = minuteValue-420
elseif(minuteValue>=360 and minuteValue<420)then
minute = minuteValue-360
elseif(minuteValue>=300 and minuteValue<360)then
minute = minuteValue-300
elseif(minuteValue>=240 and minuteValue<300)then
minute = minuteValue-240
elseif(minuteValue>=180 and minuteValue<240)then
minute = minuteValue-180
elseif(minuteValue>=120 and minuteValue<180)then
minute = minuteValue-120
elseif(minuteValue>=60 and minuteValue<120)then
minute = minuteValue-60
end
if (hour < 10) then hour = "0" .. hour end
if (minute < 10) then minute = "0" .. minute end
hourField.text = hour
minuteField.text = minute
end
elseif (phase == "ended") then
display.getCurrentStage():setFocus( nil )
t.isFocus = false
print ("ENDEDsetAlarm.rotation = "..setAlarm.rotation)
end
end
-- Stop further propagation of touch event
return true
end
问题是当我尝试定义闹钟值(如 03.45)时,没关系。如您所见,我转换了指针的旋转。但是,如果旋转低于 -90 或超过 270,我不会得到结果。那是因为我没有定义如何处理它(-旋转)
问题:
一段时间后,旋转发生了变化。所以我没有旋转 = 0 到 270 和 -90 到 0,但是 -90 到 -360+(-90) = -450;
有时它变成从 60 到 360+60=420
这是什么鬼?!=(
请帮忙,我无法解决这个问题,因为这些“转变”似乎是随机发生的(或者我只是不明白为什么会发生)