Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/460.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 将SVG重置为原始变换矩阵_Javascript_Jquery_Html_Matrix_Svg - Fatal编程技术网

Javascript 将SVG重置为原始变换矩阵

Javascript 将SVG重置为原始变换矩阵,javascript,jquery,html,matrix,svg,Javascript,Jquery,Html,Matrix,Svg,我正在尝试将SVG重置回其原始的变换矩阵属性。我有一个缩放函数,它使用这个矩阵放大和缩小SVG。但是,我希望能够将SVG重置回它最初拥有的转换矩阵 我首先将“变换矩阵”属性加载到数组中,然后在比例函数中使用该数组 $("#reset").click(function() { origMatrix = initialValue.slice(0); $("#svgGroup").attr("transform", "matrix(" + origMatrix

我正在尝试将SVG重置回其原始的变换矩阵属性。我有一个缩放函数,它使用这个矩阵放大和缩小SVG。但是,我希望能够将SVG重置回它最初拥有的转换矩阵

我首先将“变换矩阵”属性加载到数组中,然后在比例函数中使用该数组

$("#reset").click(function() {
          origMatrix = initialValue.slice(0);
          $("#svgGroup").attr("transform", "matrix(" + origMatrix + ")");
});
如何存储原始值,使其不会被缩放函数触及,并使用它们重置SVG

这是我的

这是我的剧本:

$(document).ready(function() {
    var newMatrix;
    var transMatrix = $("#svgGroup").attr("transform").replace(/[^0-9.,]+/, "");
    transMatrix = transMatrix.split(",");
    var origMatrix = [1,0,0,1, parseFloat(transMatrix[4]), parseFloat(transMatrix[5])];

    $("#out").click(function() {
            zoom(0.8)
    });
    $("#in").click(function() {
            zoom(1.25);
    });

    $("#reset").click(function() {
        alert(origMatrix)
            $("#svgGroup").attr("transform", "matrix(" + origMatrix + ")");
    });

    function zoom(scale) {
            for (var i=0; i<origMatrix.length; i++) {
                    origMatrix[i] *= scale;
             }
            newMatrix = "matrix(" +  origMatrix.join(' ') + ")";
            $("#svgGroup").attr("transform", newMatrix);
    }
    });
$(文档).ready(函数(){
var矩阵;
var transMatrix=$(“#svgGroup”).attr(“transform”).replace(/[^0-9.,]+/,”);
transMatrix=transMatrix.split(“,”);
var origMatrix=[1,0,0,1,parseFloat(transMatrix[4]),parseFloat(transMatrix[5]);
$(“#out”)。单击(函数(){
缩放(0.8)
});
$(“#in”)。单击(函数(){
变焦(1.25);
});
$(“#重置”)。单击(函数(){
警报(origMatrix)
$(“#svgGroup”).attr(“变换”、“矩阵”(+origMatrix+));
});
功能缩放(比例){

对于(var i=0;i您必须深度克隆原始数组。为此,请使用
.slice(0)

现在,您可以在重置功能中使用它

$("#reset").click(function() {
          origMatrix = initialValue.slice(0);
          $("#svgGroup").attr("transform", "matrix(" + origMatrix + ")");
});

您必须深度克隆原始阵列。为此,请使用
.slice(0)

现在您可以在重置功能中使用它

$("#reset").click(function() {
          origMatrix = initialValue.slice(0);
          $("#svgGroup").attr("transform", "matrix(" + origMatrix + ")");
});

不使用SVG DOM似乎让这变得比需要的困难得多。重置只需将比例改回1即可

给你


如果不使用SVG DOM,这似乎比需要的困难得多。重置只是将比例改回1的问题

给你


谢谢!那就行了:)谢谢!那就行了:)这同样有效:)但是,我也有一个平移函数,它使用了matrix.JSfiddle。我的缩放和平移函数就是遵循这个函数的。@我觉得这本教程通过避免内置函数使任务更容易实现,使事情看起来比实际更难。我如何调整上面的代码使之如此缩放发生在用户点击屏幕的地方?事实上,它一直在左上角放大。这也起作用:)但是,我还有一个平移功能,它使用matrix.JSfiddle。我的缩放和平移功能就是这么做的。@我觉得教程让事情看起来比避免构建更困难在使任务更容易实现的函数中。我如何调整上面的代码以使其在用户单击屏幕时发生缩放?实际上,它一直在左上角放大。