Javascript raphael.js是否有类似于popMatrix()-pushMatrix()的东西?

Javascript raphael.js是否有类似于popMatrix()-pushMatrix()的东西?,javascript,web-applications,matrix,raphael,Javascript,Web Applications,Matrix,Raphael,我正在学习Javascript/Raphael,并陷入了一个非常简单的问题中。我需要用鼠标移动和旋转多个图形,但当我用双击方式旋转它们时: rect1.dblclick(function() { this.rotate('90'); }); 我用来跟踪鼠标的参考点也会旋转。在处理过程中,我会使用pushMatrix和popMatrix,但我找不到Raphael的类似内容,也找不到任何使用save and restore canvas的简单示例……不确定它们是否可以在这里使用 这是一本书

我正在学习Javascript/Raphael,并陷入了一个非常简单的问题中。我需要用鼠标移动和旋转多个图形,但当我用双击方式旋转它们时:

rect1.dblclick(function() {
    this.rotate('90');
});
我用来跟踪鼠标的参考点也会旋转。在处理过程中,我会使用pushMatrix和popMatrix,但我找不到Raphael的类似内容,也找不到任何使用save and restore canvas的简单示例……不确定它们是否可以在这里使用

这是一本书


干杯,

这并不是因为旋转了坐标空间那么简单,所以需要对此进行说明。我不想通过x,y拖动,而是通过平移变换拖动。这里有一些例子,例如,这可能会帮助你得到部分的方式谢谢。为什么要使用转换?有什么好处吗?这部分取决于总体目标。变换的优点是它适用于任何元素,例如,一个圆没有x,y,它有cx,cy,所以直接拖动一个圆将不起作用。如果要从Raphael移动到Snap,您会发现可能需要拖动一个没有xy的组,唯一的方法是变换。然后,您还可以相当容易地组合矩阵。如果只是在基本矩形上快速拖动,则无需。但是,如果你想设计一些长期适用于更多情况的东西,我怀疑转换将是一条出路。
var canvas = document.getElementById("the_canvas");
var paper = Raphael(canvas, '500', '500');

var rect1 = paper.rect(380,10,100,50).attr({fill: '#ddd', 'stroke': 'none', opacity: '0.8'});

var startX, startY;
function onstart() {
    startX = this.attr('x');
    startY = this.attr('y');
}
function onend() {
}

function onmove(dx, dy) {
    this.attr({
        x: startX + dx,
        y: startY + dy
    }); 
}
rect1.drag(onmove, onstart, onend);

//// ... problem here
rect1.dblclick(function() {
    this.rotate('90');
});