2013-05-04 5 views
0

나는 다음과 같은 코드가 있습니다 작동코로나 SDK 궤도 객체의 변화 방향

deg = 0.0; 
local function onTouch(event) 
    if(event.yStart >= event.y) then 
     deg = deg + 10; 
    elseif(event.yStart <= event.y) then 
     deg = deg -10; 
    end 

    rads = deg * (math.pi /180.0); 
    x = 100.0 * math.cos(rads); 
    y = 100.0 * math.sin(rads); 
    rect.x = magnet.x + x; 
    rect.y = magnet.y + y; 
end 

이 방식을하지만, 완벽하게 작동하지 않습니다. 내가 뭘 하려는지 사용자가 시계 방향으로 개체를 끌어 올 때 것입니다. 사용자가 아래로 드래그하면 오브젝트가 시계 반대 방향으로 회전합니다 (회전하면 다른 오브젝트를 궤도에 그리게됩니다).

내가 가지고있는 문제는 사용자가 위로 또는 아래로 끌면 deg가 계속 증가/감소한다는 것입니다. 방향 변경시 방향을 변경하기 위해 방향을 0으로 줄여야합니다. 나는 오브젝트의 위치를 ​​엉망으로 만들지 않고 가변적으로 deg를 재설정하는 방법을 이해할 수 없다.

감사합니다.

편집

코드보고 후 필자는 문제가 내가 위에서 언급 한 내용을 하지 것을 깨닫게. 문제는 방향을 바꿀 때 event.yStart가 재설정되지 않는다는 것입니다!

그래서 무슨 일이 내가 위로 드래그만큼 내가 (내가 또는 아래로 드래그. 내가 200 픽셀 이하로 될 때까지 늘 감소시키는 시작 여부를 200 픽셀 이상 체재로까지 증가 할 때 내가 200 픽셀을 시작 가정합니다.

답변

0

을 당신이 시도 할 수 있습니다! Doğancan Arabacı @

deg = 0.0; 
local prevPosY = 0 
local function onTouch(event) 
    if event.phase == "began" then 
     prevPosY = event.y 
    end 
    if(event.y >= prevPosY) then 
     deg = deg + 10; 
    elseif(event.y <= prevPosY) then 
     deg = deg -10; 
    end 
    prevPosY = event.y 

    rads = deg * (math.pi /180.0); 
    x = 100.0 * math.cos(rads); 
    y = 100.0 * math.sin(rads); 
    rect.x = magnet.x + x; 
    rect.y = magnet.y + y; 
end 
+0

감사하지만, 이것은 이전과 같은 문제가있다 (더 나은 코드이기는하지만)하고 DEF 나 오류가 실제로 무엇인지 깨닫게 도움이 –

+0

은 당신의 코드는 실제로 일을하고 논리는 괜찮 았어, 만약 당신이 방금 if stateme에서 잘못된 변수를 사용했다. nts (event.y 대신 event.y가되어야 함). –

+0

아, 약간의 오타가 있습니다. 지금 코드를 편집했습니다. –

0
deg = 0.0; 
prevY = 0; 
local function onTouch(event) 
    if event.phase == "began" then 
     prevY = event.y 
    end 
    if(event.y >= prevY) then 
     deg = deg + 10; 
    elseif(event.y <= prevY) then 
     deg = deg -10; 
    end 
    prevY = event.y 

    rads = deg * (math.pi /180.0); 
    x = 100.0 * math.cos(rads); 
    y = 100.0 * math.sin(rads); 
    rect.x = magnet.x + x; 
    rect.y = magnet.y + y; 
end