簡體   English   中英

KineticJS更改對象的坐標

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM