2011-12-14 29 views
0
var m = ele.matrix; 

m.translate(10,10) //此行更新矩阵的'e'和'f'。我也可以看到更新的值,只有当我刷新萤火虫的值不更新元素的转换

该元素没有得到翻译。请让我知道如何让元素服从转换,当我改变元素的矩阵。

全码:

<html> 
<head> 
    <script src="raphael-min.js"></script> 
    <style> 
     #canvas_container { 
       width: 500px; 
       border: 1px solid #aaa; 
      } 
    </style> 
</head> 
<body><div id="canvas_container"></div></body> 
<script> 
window.onload = function() {  
    var paper = new Raphael(document.getElementById('canvas_container'), 500, 500);  
    text = paper.text(150,150,"Some Text");  
    text.transform("m1,0,0,1,5,0") 
} 
</script> 
</html> 

感谢

+0

一些*更多*示例代码? – 2011-12-14 13:19:43

回答

1

我想变换工作,但它立即执行,所以你不会看到它移动。尝试在超时后转化看看吧:

setTimeout(function() {text.transform("m1,0,0,1,5,0")}, 2000); 

编辑:好吧,我看着这个多一点,发现一些东西,可能会有帮助。您可以按照此fiddle

使用元素的矩阵属性没有真正记录(我想知道为什么矩阵记录在案,因为它看起来像它在内部使用,但并不真正用于拉斐尔的用户),而且我只能通过获取矩阵的变换字符串并使用element.transform()来应用它。其中一个问题是,Matrix.toTransformString()似乎有一个错误,因为如果x或y翻译为0,翻译会完全丢失(我刚刚向德米特里报告了这一点)。我能够通过传入{isSimple: false}和它的作品来得到它返回一个矩阵字符串。

但是,值得注意的是,使用这种方法,所有的旋转和缩放看起来都是相对于原点的,这有点麻烦(除非你比我更熟悉矩阵变换,这不会是硬)。无论如何,小提琴在几个元素上运行了一系列转换组合。这是一种马虎,但我想它可能会给你一些关于如何进行矩阵变换的想法(或者如果你最好直接使用元素变换函数(如直接翻译,缩放和旋转)。

+0

变换方法正在工作。但是当我像ele.matrix.translate(dx,dy)一样操纵矩阵时,翻译不会应用于元素。我是否需要调用其他一些方法,如ele.update() – rajkamal 2011-12-15 06:32:50