繁体   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