2014-03-13 2 views
1

예를 들어 점으로 이동해야합니다 : [50, 50]이고 배율은 10.4입니다. 배율을 고려하여 위치를 계산하는 방법은 무엇입니까? 내가 도달해야하는 최종 지점을 받고 클릭 I'am에규모를 고려하여 x, y를 계산하는 방법

$('#bPhoneSearch').click(function(e){ 

     e.preventDefault(); 
     node.nextXPoint = (stage.width()/2 - pos.x); 
     node.nextYPoint = (stage.height()/2 - pos.y); 
     node.status = 'moving'; 
    }); 

는 내 frameanimation 기능에 (이 중심에있을 것입니다) :

   if(node.status == 'moving') 
       { 

        var dx = (stage.x() - node.nextXPoint); 
        var dy = (stage.y() - node.nextYPoint); 
        var dist = Math.sqrt(dx * dx + dy * dy); 
        console.log(dist); 
         if(dist < 5) 
         { 

          stage.x(node.nextXPoint); 
          stage.y(node.nextYPoint); 
          node.status = ''; 
         } 
         else 
         { 
         var angle = Math.atan2(dy, dx); 
         var speedX = -Math.cos(angle) * 6; 
         var speedY = -Math.sin(angle) * 6; 

         stage.x(stage.x() + speedX); 
         stage.y(stage.y() + speedY); 
         } 
       } 

I'am가 움직이는 애니메이션을하고, 이제는 괜찮습니다. 그러나 스테이지를 스케일 할 때 위치가 잘못되었을 때 문제가 발생합니다. 스케일 계산은 어디에서해야합니까? 무대 규모를 얻는 방법

: stage.getScaleX(), stage.getScaleY()

답변

2

나는이 조금 너무 간단 보인다 내가 제대로 질문을 가지고 확실하지 않다. 내가 놓친 게 있니?

scale = 10.4; // your scale  
posXScaled = posX * scale; //posX would be 50 in your example positions[0] 
posYScaled = posY * scale; // positions[1] 

편집

난 당신이 여기 스케일 계산을 추가 할 필요가 있다고 생각 :

var dx = (stage.x() - node.nextXPoint) * scale; 
var dy = (stage.y() - node.nextYPoint) * scale; 

당신은 또한 조건을 갱신 할 필요가있을 수 있습니다 :

if(dist < 5 * scale) 
+0

을 생각 그냥 뭐. 트릭 질문? –

+0

잠깐, 내 질문을 업데이 트하십시오 :) – user3414354

+0

질문이 업데이 트되었습니다, 잘 그것의 간단한,하지만 내가 생각이 어디 posX * 스케일 계산을 끝점을 설정하거나 프레임 애니메이션 기능에, 그 코드에 대해 사과드립니다. 미리 감사드립니다. – user3414354

관련 문제