2012-04-01 82 views
1

我想交換兩個圖像的.x和.y位置。我正在使用的方法失敗了,因爲我認爲一旦我第一次交換,他們指向相同的位置或東西,似乎只有一個移動到新位置希望這是有道理的。交換兩個元素的x和y位置

theSequence[i].onClick = function(e){ 
      firstObject.push(this); 

      if(firstObject.length == 2){ 
       firstObject[0].x = firstObject[1].x; 
       firstObject[0].y = firstObject[1].y; 
       firstObject[1].x = firstObject[0].x; 
       firstObject[1].y= firstObject[0].y; 
      } 
+0

這個問題無關與JS並且與easeljs完全沒有關係。這是一個編程101問題。 – Imp 2012-04-01 14:59:03

+0

@Imp:這個問題使用JS語法,如果指定了另一種語言(比如Python),那麼你會以不同的方式解決這個問題。所以語言確實具有相關性。 – MrWhite 2012-04-01 16:00:48

回答

2

你必須使用臨時變量:

if(firstObject.length == 2) 
{ 
    tempX = firstObject[0].x; 
    tempY = firstObject[0].y; 
    firstObject[0].x = firstObject[1].x; 
    firstObject[0].y = firstObject[1].y; 
    firstObject[1].x = tempX; 
    firstObject[1].y= tempY; 
} 
+0

感謝您的支持 – james 2012-04-01 15:08:50

1

似乎與你的邏輯有問題。

當你這樣做:

firstObject[0].x = firstObject[1].x; 
firstObject[0].y = firstObject[1].y; 

兩個圖像具有相同的xy COORDS。所以,當你這樣做時:

firstObject[1].x = firstObject[0].x; 
firstObject[1].y= firstObject[0].y; 

這是多餘的。您需要在變量前將firstObject[0]xy存儲在變量中,然後將這些變量的值分配給firstObject[1]

+0

感謝您的幫助。 – james 2012-04-01 15:09:19

1

爲了避免臨時變量在ECMAScript中,你可以使用:

[a, b] = [b, a]; 

(像Python)或使用這個技巧:

a = -(b = (a += b) - b) + a; 

source