javascript – 如何以编程方式在SVG中移动多边形?

这里(SVG draggable using JQuery and Jquery-svg,接受的答案)是实现拖放功能来移动圈子.它基于改变可移动圆对象的cx和cy属性.

如何拖放多边形?

我怎样才能使用没有cx,cy坐标的任何其他元素?

我应该重新计算所有对象点吗?

我希望有一种更简单的方法.我打算使用JavaScript jQuery

@H_403_12@最佳答案
有一种简单的方法可以在不重新计算点的情况下完成.您只需使用属性转换来转换形状.假设你在你的svg中有任何形状(在我想要向你展示的情况下,我将使用一个形状元素),并且你只能在事件mousedown时移动该形状,然后触发mousemove,以及释放鼠标按钮时此操作结束.然后使用jQuery和svg标记作为选择器的过程如下:

$("svg").mousedown(function(e){
    /* Getting initial coordinates of pointer */
    var GetInitCoordx = e.clientX;
    var GetInitCoordy = e.clientY;

    /* When mouse is moved while down,then applies the transformation. */
    $(this).bind("mousemove.customName",function(e){
        $("svg").find("path").attr("transform","translate("+String(e.clientX-GetInitCoordx)+","+String(e.clientY-GetInitCoordy)+")");
    });

    /* When mouse button is released,move event is unbind */
    $(this).mouseup(function(e){
        $(this).unbind("mousemove.customName");
    );}
});

基本的想法是.我已经使用这种方法设计了一个应用程序,它在Chrome,IE9和Opera中都适用于我.无论如何,如果我在代码中犯了错误,你可以自由地温暖我,但我想让你得到的是我使用的方法非常容易实现.

另外,请记住,您可以为svg元素设置唯一属性值,以便在使用jQuery选择器进行选择时进行识别.

相关文章

jQuery插件的种类 1、封装对象方法 这种插件是将对象方法封装起来,用于对通过选择器获取的jQuery对象进...
扩展jQuery插件和方法的作用是非常强大的,它可以节省大量开发时间。 入门 编写一个jQuery插件开始于给...
最近项目中需要实现3D图片层叠旋转木马切换的效果,于是用到了jquery.roundabout.js。 兼容性如图: ht...
一、什么是deferred对象? 开发网站的过程中,我们经常遇到某些耗时很长的javascript操作。其中,既有异...
AMD 模块 AMD(异步模块定义,Asynchronous Module Definition)格式总体的目标是为现在的开发者提供一...