0

我有一个小问题...

想象一个 ractangle 说 500 x 250。(简单一点)

在矩形内有一条横跨整个宽度的线。

我希望用户能够在矩形内上下拖动这条线。(可以很容易地用 jqueryui 可拖动完成)

我还希望用户能够单击该行将其拆分,然后有两行(这是我卡住的地方)。也是一种将两条线重新连接在一起的方法。

我真的没有从哪里开始,关于我应该在哪里寻找的任何想法,或者允许这样做的合适插件?

谢谢马特

4

1 回答 1

0

我使用 HTML5 Canvas 和 KineticJS 框架做了一个例子。

一开始,只有一条水平线,单击一次后,还剩下两条线,正好在用户单击的位置分开。

这是代码:

var stage = new Kinetic.Stage({
    container: 'container'
});

var layer = new Kinetic.Layer();

var rect = new Kinetic.Rect({
    x: 0,
    y: 0,
    width: 500,
    height: 250,
    fill: 'red'
});
layer.add(rect);

var line = new Kinetic.Rect({
    x: 0,
    y: 0,
    width: 500,
    height: 2,
    fill: 'black',
    draggable: true,
    dragBoundFunc: function (pos) {
        return {
            x: this.getAbsolutePosition().x,
            y: pos.y
        };
    }
});
layer.add(line);
stage.add(layer);
stage.draw();

line.on('click', function(e){
    var y = line.getY();
    line.destroy();
    var line1 = new Kinetic.Rect({
        x: 0,
        y: y,
        width: e.x,
        height: 2,
        fill: 'black',
        draggable: true,
        dragBoundFunc: function (pos) {
            return {
                x: this.getAbsolutePosition().x,
                y: pos.y
            };
        }
    });

    var line2 = new Kinetic.Rect({
        x: e.x,
        y: y,
        width: stage.getWidth()-e.x,
        height: 2,
        fill: 'black',
        draggable: true,
        dragBoundFunc: function (pos) {
            return {
                x: this.getAbsolutePosition().x,
                y: pos.y
            };
        }
    });
    layer.add(line1);
    layer.add(line2);
    stage.add(layer);
    stage.draw();
});
于 2013-06-06T11:15:24.510 回答