我想使用SVG.js为变换矩阵设置动画。列出了一种方法, matrix.morph(),用于执行此操作。我无法做到这一点。
以下是尝试应用此方法的示例,但它不执行任何操作。有人可以告诉我如何使用SVG.js动画转换矩阵。感谢。
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>SVG.js - Rect Animate Matrix Morph</title>
<script type="text/javascript" src="//svgDiscovery.com/SVG.js/svg.js"></script>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<meta name="viewport" content="width=device-width">
</head>
<body style='padding:10px;font-family:arial;'>
<center>
<h4>SVG.js - Rect Animate Animate Matrix Morph</h4>
<table>
<tr>
<td>
<div id="svgDiv" style='background-color:lightgreen;width:400px;height:400px;'></div>
</td>
</tr></table>
<script>
var mySVG = SVG('svgDiv').size(400, 400);
var myRect = mySVG.rect(100,100).attr({x:150,y:150,id:'myRect',fill: '#f00','stroke-width':3,stroke:'black'});
var myRectMatrix = new SVG.Matrix
var myRectMatrixMorph=myRectMatrix.morph(1,2,3,4,5,6)
console.log(myRectMatrixMorph.toString())
</script>
</body>
</html>
答案 0 :(得分:0)
使用transform()
方法为元素的变换设置动画,就像在元素上设置变换一样。
在制作动画时,您不需要自己触摸变形方法。
尝试:
el.animate().transform({rotation:25})
// or with matrix
el.animate().transform({a:1, b:0, c:0 .... })
// or with SVG.Matrix
el.animate().transform(new SVG.Matrix(1,0,0 ....))
变形方法仅适用于您希望在特定位置使用矩阵的情况。像:
var m1 = new SVG.Matrix(1,0,0,1,0,0)
var m2 = new SVG.Matrix(2,0,0,2,0,0)
m1.morph(m2)
m1.at(0.5) // returns matrix (1.5,0,0,1.5,0,0)