0

嘿嘿,在学习 JS 和使用 KineticJS 时,我遇到了一个小问题。

由于我现在无法将自己的代码放入小提琴中,让我们以这个例子为例:http: //jsfiddle.net/m1erickson/n5xMs/

如果我们使白色矩形也可拖动:

        var white = new Kinetic.Rect({
        x: 20,
        y: 20,
        width: 300,
        height: 300,
        fill: 'white',
        stroke: 'black',
        strokeWidth: 2,
        draggable: true
    });

如果移动白色矩形,dragBoundFunc 将无法正常工作。在使用 coda2 进行调试时,我发现当拖动白色矩形时,x 和 y 属性不会改变。

为什么呢?我如何设法使 dragBoundFunc 用于移动父形状?

在此先感谢您的帮助。

4

1 回答 1

0

首先:

我发现当拖动白色矩形时,x 和 y 属性不会改变。

不,它们没有,因为它们是静态定义的。如果您想更改值,需要在dragBoundFunc. 它可能就像以与现在相同的方式计算它们一样简单,但在该函数内部。

我如何设法使 dragBoundFunc 用于移动父形状?

在您的示例中,白色矩形不是任何东西的父级,它只是在与橙色矩形相同的舞台上绘制的形状。您要做的是使白色形状背景和橙色矩形成为同一节点的两个子节点,然后. 在这里最直接的方法是使图层本身可拖动,例如:

var layer = new Kinetic.Layer({draggable: true});

但是你如何做到这一点是任意的。例如,白色和橙色框也可能是另一个Kinetic.Container的孩子。

于 2014-05-05T14:52:43.450 回答