TP Notes
全部
CSS
SVG
資源收集
HTML
其它
關於我
2020年12月7日 星期一
SVG 與 javascript
SVG 可以很不錯的和 CSS 整合在一起,那麼來看看和 javascript 相關的 API # 動畫控制 SVG 的動畫控制上,針對單一動畫很奇怪的沒有 **暫停** 這個功能,只能對全部的 SVG 動畫全部暫停 指令 : ``` svg.pauseAnimations(); svg.unpauseAnimations(); ``` 範例如下: ``` $mmcode(r0) ```
暫停
繼續
對於單一動畫比較會用到的 API 有這些 ``` getCurrentTime() - 取得目前動畫的時間 beginElement() - 開始動畫 beginElementAt(時間) - 在時間(秒)後開始動畫 endElement() - 停止動畫 endElementAt(時間) - 在時間(秒)後停止動畫 EVENT 的部份有這三個 beginEvent - 動畫開始時 endEvent - 動畫停止時 repeatEvent - 動畫重覆時 ``` 先來一個簡單的範例,範例中每 100ms 更新一次狀態,用下面這段程式碼來取得動畫執行中的 x 座標,如果要設定計 **暫停** 的功能,必須先取得座標,在下次執行時從這裡開始,然而這個解法有很多問題,最理想的還是等 SVG 的動畫新增暫停的指令 ``` document.getElementById("a120701_r1").x.animVal.value; ``` ``` $mmcode(r1) ```
點我開始
點我停止
動畫時間 :
x 座標 :
$textarea id="a120701_status" style="width:300px;height:100px"> $/textarea>
既然可以用 javascript 控制,那麼先來修改一下上一篇的時鐘,來把時間調成目前時間 ``` $mmcode(r2) ```
# 新增物件 SVG 由於命名空間的問題,用 html 的 append 新增html字串時不會有反應, 之前用過一個技巧,就是重寫裡頭的 html 來產生效果,其實更正確的方式是,建立一個屬於 svg 命名空間的物件,就可以用 append 加入了,方法如下: ``` var obj=document.createElementNS('http://www.w3.org/2000/svg', "tag 名稱,例如 rect"); 建立 obj 後可以用 obj.setAttribute("參數",值); 或用 jquery $(obj).attr("參數",值); ``` 範例如下: ``` $mmcode(r3) ```
用append新增
重新寫入html
用createElementNS新增
沒有留言:
張貼留言
‹
›
首頁
查看網路版
沒有留言:
張貼留言