SVGAnimationElement: repeatEvent 事件
SVGAnimationElement 介面的 repeatEvent 事件在元素的本地時間軸重複時觸發。它將在元素每次重複後觸發,第一次迭代之後。
注意: 與 repeatEvent 事件關聯的是一個整數,該整數指示哪個重複迭代正在開始;這可以在事件物件的 detail 屬性中找到。該值為一個 0 基的整數,但 repeat 事件不會為第一次迭代觸發,因此觀察到的值將是 >= 1。這在 Firefox 中得到支援,但在 Chrome 中不支援。
此事件不可取消,也不會冒泡。
語法
在諸如 addEventListener() 之類的方法中使用事件名稱,或設定事件處理程式屬性。
js
addEventListener("repeatEvent", (event) => { })
onrepeat = (event) => { }
事件型別
事件屬性
TimeEvent.detail只讀-
一個
long,指定有關事件的一些詳細資訊,具體取決於事件的型別。對於此事件型別,表示動畫的重複次數。 TimeEvent.view只讀-
一個 WindowProxy,標識生成事件的視窗。
示例
動畫圓
html
<svg xmlns="http://www.w3.org/2000/svg" width="300px" height="100px">
<title>SVG SMIL Animate with Path</title>
<circle cx="0" cy="50" r="50" fill="blue" stroke="black" stroke-width="1">
<animateMotion path="M 0 0 H 300 Z" dur="5s" repeatCount="indefinite" />
</circle>
</svg>
<hr />
<ul></ul>
css
ul {
height: 100px;
border: 1px solid #dddddd;
overflow-y: scroll;
padding: 10px 30px;
}
js
let svgElem = document.querySelector("svg");
let animateElem = document.querySelector("animateMotion");
let list = document.querySelector("ul");
animateElem.addEventListener("beginEvent", () => {
let listItem = document.createElement("li");
listItem.textContent = "beginEvent fired";
list.appendChild(listItem);
});
animateElem.addEventListener("repeatEvent", (e) => {
let listItem = document.createElement("li");
let msg = "repeatEvent fired";
if (e.detail) {
msg += `; repeat number: ${e.detail}`;
}
listItem.textContent = msg;
list.appendChild(listItem);
});
事件處理程式屬性等效項
請注意,您也可以使用 onrepeat 事件處理程式屬性為 repeat 事件建立事件監聽器。
js
animateElem.onrepeat = () => {
console.log("repeatEvent fired");
};
規範
| 規範 |
|---|
| Scalable Vector Graphics (SVG) 2 # RepeatEvent |
瀏覽器相容性
載入中…