[英]KineticJS changing coordinates for objects
我不明白為什么會有差分位移結果 。 多邊形和文本均勻移動,線相對誤差多邊形移動。
function setNewPosition(x, y) {
var lines = stage.find('Line');
if (lines.length > 0) {
lines.forEach(function inLines(line) {
var points = line.getPoints();
if (points.length > 0) {
points.forEach(function pSet(p) {
p.x += x;
p.y += y;
});
}
});
};
polygons = stage.find('Polygon');
if (polygons.length > 0) {
polygons.forEach(function inPoly(polygon) {
var points = polygon.getPoints();
if (points.length > 0) {
points.forEach(function pSet(p) {
p.x += x;
p.y += y;
});
}
});
};
texts = stage.find('Text');
if (texts.length > 0)
texts.forEach(function inText(text) {
oX = text.getX();
oY = text.getY();
text.setX(oX + x);
text.setY(oY + y);
}
);
layer.draw();
}
我認為您不應該擺弄這些要點。 每個形狀都有一個move()方法,為什么不使用它呢?
move()相對於其之前的位置移動形狀,因此您的調用將為move(-80,0)。
此外,為什么還要檢查查找數組的長度? 如果在無用之后再使用forEach,因為forEach在您什么都找不到的情況下什么也不會做。
還有一個想法:您使用forEach,即IE9 +。 為什么不改用Kineticjs Collection.each()方法呢?
編輯:並且您也可以移動整個圖層,而無需遍歷找到的對象。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.