我正在尝试交换两个图像.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 :(得分: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;
}
答案 1 :(得分:1)
您的逻辑似乎存在问题。
当你这样做时:
firstObject[0].x = firstObject[1].x;
firstObject[0].y = firstObject[1].y;
两张图片都有相同的x
和y
坐标。所以,当你这样做时:
firstObject[1].x = firstObject[0].x;
firstObject[1].y= firstObject[0].y;
这是多余的。在更改变量之前,您需要将x
和y
firstObject[0]
存储在变量中,然后将这些变量的值分配给firstObject[1]
。
答案 2 :(得分:1)
要避免ECMAscript中的临时变量,您可以使用:
[a, b] = [b, a];
(比如在python中)或者使用这个hack:
a = -(b = (a += b) - b) + a;