问题:当我更改多边形points
的poly2
时,它也更改了另一个多边形points
的poly
!
为什么更改一个也会更改另一个,而我们如何将解耦?
console.log(poly.getPoints()[1].x); // 100
// Make a change to `poly2`
poly2.setPoints(poly.getPoints());
poly2.getPoints()[1].x=200
console.log(poly.getPoints()[1].x); // 200 (both poly and poly2 are affected!)
jsfiddle: http://jsfiddle.net/8hFyv/
最佳答案
poly2.setPoints(poly.getPoints());
这是你的问题。 points数组是同一对象。
由于您的数组中有数组,因此
slice(0)
技巧不起作用,您需要深层复制。幸运的是,您正在使用jQuery,它具有执行此操作的方法。
将以上行替换为:
poly2.setPoints($.extend(true, [], poly.getPoints()));