1

我正在尝试使用带有 mousedown 和拖动事件的 KineticJS 创建一个矩形形状,但运气不佳。有没有人做过类似的事情?

4

1 回答 1

3

http://jsfiddle.net/AYHSM/6/

var stage = new Kinetic.Stage({
    container: 'container',
    width: 600,
    height: 400
});

var layer = new Kinetic.Layer();
layer.add(new Kinetic.Rect({
    x:0,
    y:0,
    width:600,
    height:400
}));  // this rect will allow us to use mouse events on the layer. There's probably a better way to do this, but I don't know it.
stage.add(layer);
var rect, down = false; // down is a flag to know whether or not the mouse button is down so that we only resize the new rect when it is down.

layer.on("mousedown", function(e) {

    down = true;
    var r = Math.round(Math.random()*255),
        g = Math.round(Math.random()*255),
        b = Math.round(Math.random()*255);
    rect = new Kinetic.Rect({
        x: e.layerX,
        y: e.layerY,
        width: 11,
        height: 1,
        fill: 'rgb('+r+','+g+','+b+')',
        stroke: 'black',
        strokeWidth: 4
    });
    layer.add(rect);
});

layer.on("mousemove", function(e) {
    if (!down) return;

    var p = rect.attrs;

    rect.setWidth(e.layerX - p.x);
    rect.setHeight(e.layerY - p.y);
    layer.draw();
});

layer.on("mouseup", function(e) {
    down = false;
});​
于 2012-12-13T19:31:47.037 回答