获取可拖动函数SVG.js中的宽度

时间:2014-06-26 19:55:39

标签: svg.js

我知道我可以使用宽度或大小函数来获取它,但我想在创建可拖动对象的那一刻尝试它。

我这样做是因为我需要为元素赋予网格效果,并使其保持在可绘制区域内。

这类似于我尝试做的事情:

square = draw.rect(size, size).x(x).y(y).draggable(function(x, y){
var xend = x - x % size;
var yend = y - y % size;

if(xend < 0)
    xend = 0;
if(yend < 0)
    yend = 0;

if(xend > 1000)
    xend = 1000 - width*;

return { x: xend, y: yend } 
});

带有*的var是我想要的。

也很高兴知道如何允许svg.js元素与jquery交互,但我想这是另一个问题。


编辑嗯,现在实际上我需要访问该元素的其他属性,如果我不能从可拖动元素那样做,我想我应该寻找另一种方法来让它可以拖拽? :(请帮忙!

2 个答案:

答案 0 :(得分:0)

解决方案是(如Nils所说),使用square.bbox函数,例如:

square = draw.rect(size, size).x(x).y(y).draggable(function(x, y){
var xend = x - x % size;
var yend = y - y % size;

if(xend < 0)
    xend = 0;
if(yend < 0)
    yend = 0;

if(xend > 1000)
    xend = 1000 - square.bbox().width;

return { x: xend, y: yend } 
});

此外,如果您想稍后访问该元素,可以使用square.attr('id','id_name')方法分配id,并使用SVG.get调用(< em>'id_name')方法。

答案 1 :(得分:0)

您可能会对以下事实感兴趣:draggable-function的回调是在元素本身的范围内调用的。 此外,这里不需要使用bbox,因为宽度作为属性存储在元素中。

所以解决方案是:

square = draw.rect(size, size).x(x).y(y).draggable(function(x, y){
    var xend = x - x % size;
    var yend = y - y % size;

    if(xend < 0)
        xend = 0;
    if(yend < 0)
        yend = 0;

    if(xend > 1000)
        xend = 1000 - this.attr('width')

    return { x: xend, y: yend } 
});
顺便问一下:你为什么要搜索宽度并使用上面几行的大小?它的值相同,因为您只需将宽度设置为