将KineticJS形状保持在画布内

时间:2012-11-30 13:03:52

标签: javascript canvas draggable kineticjs shapes

使用KineticJS的拖放功能时,是否有一种简单的方法可以确保您的形状留在画布内?

标准,形状离开画布一点,直到鼠标击中画布边框。我希望它是形状边框,而不是鼠标。

有没有办法让这种情况发生?

1 个答案:

答案 0 :(得分:3)

使用KineticJS tutorial

中说明的dragBoundFunc

这是JS fiddle

代码:

dragBoundFunc: function(pos) {
    console.log(bbox.getWidth());
    var xBound = stage.getWidth() - bbox.getWidth();
    var yBound = stage.getHeight() - bbox.getHeight();

    // Check X boundries
    if (pos.x > xBound) {
        var newX = xBound;
    } else if (pos.x <= 0) {
        var newX = 0;
    } else {
        var newX = pos.x;
    }

    // Check Y boundries
    if (pos.y > yBound) {
        var newY = yBound;
    } else if (pos.y <= 0) {
        var newY = 0;
    } else {
        var newY = pos.y;
    }

    return {
        x: newX,
        y: newY
    };
}