【问题标题】:Make shapes snap to other shapes with KineticJS使用 KineticJS 使形状与其他形状对齐
【发布时间】:2014-04-01 15:31:19
【问题描述】:

假设我已经在容器中拖放了一个矩形。如何以类似于 jqueryUI 实现的方式使其他可拖动矩形与画布中的现有矩形(与其边框不在其内部)对齐?

【问题讨论】:

标签: kineticjs


【解决方案1】:

演示:http://jsfiddle.net/m1erickson/rx8SM/

假设你有一个这样定义的网格:

var cellWidth=40;
var cellHeight=40;

然后你可以像这样捕捉到一个单元格交叉点:

捕捉到矩形 x,y 所在的左上角交点

rect1.on("dragend",function(){

    // snap to the grid intersection that this rect's x,y is in

    var snapX=parseInt(this.x())/cellWidth)*cellWidth;

    var snapY=parseInt(this.y())/cellHeight)*cellHeight;

    this.position({x:snapX,y:snapY});

    layer.draw();
});

捕捉到最近的左上角交叉点

rect1.on("dragend",function(){

    // snap to the closest top-left grid intersection

    var snapX=parseInt((this.x()+grid.cellWidth/2)/grid.cellWidth)*grid.cellWidth;

    var snapY=parseInt((this.y()+grid.cellHeight/2)/grid.cellHeight)*grid.cellHeight;

    this.position({x:snapX,y:snapY});

    layer.draw();
});

【讨论】:

  • 这离我需要的有点远,我会尽量适应我的解决方案。
  • 如何让它捕捉到网格矩形的边界,而不是只捕捉到交叉点?
猜你喜欢
  • 2012-06-06
  • 1970-01-01
  • 2012-11-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-23
相关资源
最近更新 更多