SVG keyPoints 屬性

admin發表於2018-10-17

keyPoints是路徑動畫元素<animateMotion>的屬性。

關於上述動畫元素的具體用法參閱SVG animateMotion路徑動畫一章節。

動畫在不同的執行時段可能具有不同的特徵,可以通過keyPoints屬性為動畫分段。

keyPoints屬性值介於0-1之間,使用分號分隔。

程式碼例項如下:

[HTML] 純文字檢視 複製程式碼執行程式碼
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta name="author" content="http://www.softwhy.com/" />
<title>螞蟻部落</title>
<style>
* {
  margin: 0px;
  padding: 0px;
}
svg {
  border:1px solid blue;
  width:400px;
  height:300px;
  margin:200px;
}
</style>
</head>
<body>
<svg version="1.1" xmlns="http://www.w3.org/2000/svg">
  <path 
    d="M20,20 Q50,60 80,140 T340,100"
    stroke="red"
    stroke-width="6"
    fill="none" />
    
  <animateMotion
    xlink:href="#ant"
    path="M20,20 Q50,60 80,140 T340,100"
    dur="10s"
    begin="0s"
    calcMode="linear"
    keyPoints="0;0.4;0.8;1"
    keyTimes="0;0.1;0.6;1"
    fill="freeze">
  </animateMotion> 
 
  <rect id="ant"
    x="0" y="0"
    width="20" height="20"
    fill="green"/>
</svg>          
</body>
</html>

程式碼分析如下:

(1).使用keyPoints屬性將整個動畫分為三段。

(2).keyTimes規定動畫每一段所花費的時間,必須與keyPoints分段對應起來。

使用values也可以分段,不過對一個比較複雜的線性動畫有點超過其能力,對於簡單線性規則動畫還可以。

關於keyTimes可以參閱calcMode, keyTimes和keySplines屬性一章節。

相關文章