2011-12-14 57 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