我正在开发一个涉及时钟的项目,以及一个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,我就不会得到结果。那是因为我没有定义该怎么做(-rotation)
问题:
一段时间后,轮换转移。所以我没有旋转= 0到270和-90到0,但-90到-360 +( - 90)= -450;
有时它变为60到360 + 60 = 420
WTF是吗?! =(
请帮忙,我无法解决这个问题,因为这些“转变”似乎是随机发生的(或者我只是不知道为什么会发生这种转变)答案 0 :(得分:0)
你可以试试这个:其中dx和dy等于x的变化和y的变化
angle = ((math.atan2(dx,dy)*180 / math.pi) - 180) * -1
无论你转向哪个方向或旋转多少,这都会给你0到360之间的正值。