2013-06-06 65 views
0

一个小问题,我有...Jquery/HTML5?可能是画布?线操纵

试想一个ractangle说,500×250(易位)

在矩形有一行进行的跨整个宽度。

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

我还希望用户能够点击该行来分割它,然后有两行(这是我被卡住的地方)。还有一种将两条线重新结合在一起的方法。

我真的不知道从哪里开始,对于我应该在哪里寻找的任何想法,或者一个合适的插件允许这样做?

感谢 马特

+0

你能描述一下你的意思是什么“拆分为” –

+0

一条线,点击它,你现在有两行。 –

+0

两条水平线跨越宽度,一个在另一个的上方,或者一条水平线在您想要分割的地方断开? –

回答

0

我已经使用HTML5画布和KineticJS框架作出了example

开始的时候,只有一条水平线,点击一下后,剩下两条线,正好分开用户点击的地方。

下面是代码:

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(); 
}); 
+0

嗨,谢谢你,但它似乎没有显示任何东西?我错过了什么吗? –

+0

它没有显示任何东西或只有线,因为线是在红色矩形的顶部(黑色,有点难以看到)) – irie

+0

好吧,我明白了 - 浏览器问题,这并不是' t似乎在最新版本中工作。谢谢你的帮助。 –