Создайте прямоугольник с событием mousedown в KineticJS

1

Я пытаюсь создать форму прямоугольника, используя KineticJS с событиями mousedown и drag, но не имея большой удачи с ним. Кто-нибудь сделал что-то подобное?

  • 0
    У вас есть фрагмент кода, который не работает?
Теги:
html5-canvas
kineticjs

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 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;
});​
  • 0
    И здесь я добавил стандартную функциональность Photoshop alt / shift / space при перетаскивании: jsfiddle.net/AYHSM/3
  • 0
    Большое спасибо. Я полностью пропустил слой layer.draw (), просто установив ширину и высоту. Еще раз спасибо!
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню