如何在RaphaelJS中使用Matrix

时间:2013-01-03 10:31:03

标签: javascript graphics web svg raphael

我想移动RaphaelElement并创建一个简单的测试用例:

var paper = Raphael(0, 0, 500, 500);
var rect = paper.rect(50, 50, 100, 100);
rect.attr("fill", "blue");
rect.matrix.translate(300, 300);

但矩形没有移动。起初我认为矩阵可能没有正确更新并尝试了这个:

//...
alert("" + rect.matrix.x(0,0)); // prints 0
rect.matrix.translate(300, 300);
alert("" + rect.matrix.x(0,0)); //prints 300

显然矩阵已经改变,但矩形并不关心。因此我将代码更改为:

 rect.matrix=rect.matrix.translate(300,300);

但要么是破坏了程序,要么根本没有效果。 看起来我缺少某种更新方法,将矩阵应用于RaphaelElement。看起来像这样:

rect.updateMatrix();

我在文档中搜索过但没有找到这样的方法。 RaphaelJs中矩阵的规范用法是什么?

2 个答案:

答案 0 :(得分:2)

rect.translate(300, 300)将应用翻译或rect.transform("t300,300")

另外

rect.transform(['m',mat.a, mat.b, mat.c, mat.d, mat.e, mat.f]);

可用于将现有矩阵(mat)应用于矩形。

答案 1 :(得分:0)

我在Stackoverflow上找到了另一个参考,它解释了矩阵。它解决了我的问题。

StackOverflow Matrix clarification