Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/473.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用raphael.pan-zoom.js库,如何重置可拖动函数_Javascript_Svg_Raphael - Fatal编程技术网

Javascript 使用raphael.pan-zoom.js库,如何重置可拖动函数

Javascript 使用raphael.pan-zoom.js库,如何重置可拖动函数,javascript,svg,raphael,Javascript,Svg,Raphael,我做了一个draggalbe函数,效果很好,但是当我使用库放大\缩小时,我的draggable函数会不同步地移动对象,下面是我的draggable函数: (function(R) { R.el.draggable = function(move, start, up) { this._ui = this._ui || {}; var that = this; this._ui.onMove = R.is(move, 'function') ? mo

我做了一个draggalbe函数,效果很好,但是当我使用库放大\缩小时,我的draggable函数会不同步地移动对象,下面是我的draggable函数:

(function(R) {
R.el.draggable = function(move, start, up) {
    this._ui = this._ui || {};   
    var that = this;     
    this._ui.onMove = R.is(move, 'function') ?
    move : function(distanceX, distanceY, x, y, deltaX, deltaY) {
        that.translate(deltaX, deltaY);
        event.stopPropagation();
    };   
    this._ui.onStart = R.is(start, 'function') ? start : function(x, y) {
        event.stopPropagation();
    };   
    function onMove(distanceX, distanceY, x, y) {
        var deltaX = x - that._ui.lastX;
        var deltaY = y - that._ui.lastY;
        that._ui.lastX = x;
        that._ui.lastY = y;
        that._ui.onMove(distanceX, distanceY, x, y, deltaX, deltaY);
        //that.paper.safari();
        event.stopPropagation();
    };   
    function onStart(x, y) {
        that._ui.lastX = x;
        that._ui.lastY = y;
        that._ui.onStart(x, y);
        event.stopPropagation();
    };   
    return this.drag(onMove, onStart, up);
};
})(拉斐尔)

我怎样才能修好它?

我知道怎么做

(function(R) {
    R.el.draggable = function(move, start, up) {
        this._ui = this._ui || {};   
        var that = this;     
        this._ui.onMove = R.is(move, 'function') ?
        move : function(distanceX, distanceY, x, y, deltaX, deltaY) {
            that.translate(deltaX, deltaY);
            event.stopPropagation();
        };   
        this._ui.onStart = R.is(start, 'function') ? start : function(x, y) {
            //event.stopPropagation();
        };   
        function onMove(distanceX, distanceY, x, y) {
            var deltaX = x - that._ui.lastX;
            var deltaY = y - that._ui.lastY;
            that._ui.lastX = x;
            that._ui.lastY = y;
            //console.log("before deltaX:"+deltaX+" deltaY:"+deltaY);
            // 根据raphael.pan-zoom.js 提供的zoom值 计算当前 缩放比例下的 移动值
            deltaX=deltaX*(1-that.paper.zoom.currZoom/10);
            deltaY=deltaY*(1-that.paper.zoom.currZoom/10);

            console.log("after deltaX:"+deltaX+" deltaY:"+deltaY);
            that._ui.onMove(distanceX, distanceY, x, y, deltaX, deltaY);
            //that.paper.safari();
            event.stopPropagation();
        };   
        function onStart(x, y) {
            that._ui.lastX = x;
            that._ui.lastY = y;
            that._ui.onStart(x, y);
            event.stopPropagation();
        };   
        return this.drag(onMove, onStart, up);
    }})(Raphael);