2014-03-13 33 views
1

例如我需要移動到點:[50, 50],我有階段尺度10.4,我該如何計算考慮到規模的位置公式是什麼?如何計算到位置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); 
         } 
       } 

我'做一個移動的動畫,現在它運作良好,但是當我縮放舞臺時,位置變得錯誤,所以問題是我在哪裏進行比例計算。

如何讓舞臺規模: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

問題已更新,以及它的簡單,但我不知道在幀動畫函數中設置結束點或OR時,將posX *對不起,代碼量,提前致謝 – user3414354