【问题标题】:KineticJS changing coordinates for objectsKineticJS 更改对象的坐标
【发布时间】:2013-11-22 10:49:33
【问题描述】:

我不明白为什么会有差动位移Result 。 多边形和文本均匀移动,线相对误差多边形移动。

    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();
            }

【问题讨论】:

  • offtopic:这段代码可以进行一些重构 ;)

标签: javascript canvas kineticjs


【解决方案1】:

我认为你不应该摆弄这些点。每个形状都有一个 move() 方法,你为什么不使用呢?

move() 相对于之前的位置移动形状,因此您的调用将是 move(-80, 0)。

此外,为什么要检查查找数组的长度?如果你在 forEach 没用后使用它,因为当你没有找到任何东西时,forEach 什么都不做。

还有一个想法:你使用 forEach,那是 IE9+ 的。为什么不使用 Kineticjs Collection.each() 方法呢?

编辑: 而且你也可以移动整个图层,不需要遍历找到的对象。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-06
    • 2012-12-13
    • 2013-03-23
    • 2017-07-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多