2013-05-05 80 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