2013-05-05 121 views
3

有沒有辦法使用raphaeljs庫獲取元素旋轉值?我確定有,但我無法在文檔中的任何地方找到它。我想它會像這樣.attr('rotation'),但這不起作用。Raphael js獲取元素的旋轉

回答

3

使用Element.transform()函數獲取當前轉換數據並設置它。

您可能已經知道element.transform(tstring)設置了變換數據,包括旋轉。

爲了獲得這些數據從拉斐爾回,只需撥打element.transform()不帶任何參數:

tstring = element.transform();` 

希望有所幫助。

+1

酷的感謝!旋轉值嵌套在一個數組中,以便得到它我做到了這一點: var rotation = element.transform()[0] [1]; – Jammer 2013-05-05 13:03:20

3

這裏有四種方式,我發現獲得拉斐爾元素的旋轉值:應用的轉換

console.log(el.attr('transform')[0][1]); 
console.log(el.transform()[0][1]); 
console.log(el.matrix.split().rotate); 
console.log(el.matrix.toTransformString().split('r')[1]); 

具體產出有所不同基於之前。

  • 如果沒有轉型尚未得到應用,前兩個會拋出「無法讀取未定義的特性」錯誤,第二次將記錄-0,第四個將記錄undefined

  • 如果已經應用了-90°和269.999°(包括)之間的先前轉換,則所有四個日誌記錄轉換(儘管第三個將關閉幾位小數,並且第四個將跟隨0,0)。

  • 如果之前的轉換超出了上述範圍,前兩個日誌完成了轉換,第二個日誌轉換了一個相對於並小於360°的值(再次,第三個將被關閉小數點後幾位,第四位後面跟着0,0)。

  • 如果已對元素應用了多個轉換,則這些轉換將被壓入前兩個訪問的數組中,因此需要相應地調整第一個括號表示索引(或者它只會記錄第一個旋轉應用,而不是所有旋轉的總和)。

DOCS:

http://raphaeljs.com/reference.html#Element.attr

http://raphaeljs.com/reference.html#Element.transform

http://raphaeljs.com/reference.html#Matrix.split