SVG中的動畫技術 1

2021-08-29 10:54:44 字數 4398 閱讀 5785

svg中的動畫技術(1)

動畫技術是網際網路中不可缺少的乙個重要組成部分,是吸引訪問者的重要手段之一,svg也同樣有能力隨時改變向量圖象外在表現的能力。svg中生成動畫的方式有:

1)利用svg提供的動畫元素實現:由於svg的內容可以定義成動態變化的,因此,利用svg提供的各種動畫元素,我們就可以得到各種動畫效果,比如:沿某路徑運動、漸隱漸現、旋轉、縮放、改變顏色等。

2)使用svg dom:由於svg dom遵循dom1、dom2規範的大部分內容,因此,svg中的每個屬性和樣式都可以通過指令碼程式設計來訪問;另外,svg也提供了一套擴充套件的dom介面,讓通過指令碼程式設計實現動畫效果的手段更方便快捷。指令碼語言中的定時器可以很好地觸發和控制圖象的運動。

svg的動畫元素標準的指定者與symm(synchronized **********)工作組合作,共同編寫了smil動畫規範,這個規範描繪了xml文件結構中使用的通用的動畫特徵集。svg不但實現了smil的動畫規範,同時也提供了一些svg的特殊擴充套件。svg定義了比smil動畫更為嚴格的錯誤處理程式,當文件中有任何錯誤產生時,動畫都將會停止。

svg支援smil(synchronized ********** integration language)動畫規範中定義的下面的動畫元素:

animate:改變svg元素數值屬性的不同值

set:是animate的簡化,主要用來改變非數值屬性的屬性值,比如visibility屬性等

animatemotion:沿某運動路線移動svg元素

animatecolor:改變某些元素的顏色屬性值

svg對smil動畫的擴充套件元素和屬性有:

animatetransform:改變svg轉換的轉換屬性值

path屬性:改變animatemotion元素中path屬性的所有特性。

mpath元素:svg允許animatemotion元素包含mpath子元素,它能夠引用svg中path元素的路徑定義

rotate屬性:svg為animatemotion增加乙個rotate屬性,用來控制乙個物件是否自動進行旋轉。

下面通過乙個簡單的例子,來看一看svg是如何實現動畫效果的:

xml **

xmlversion="1.0"

encoding="utf-16"

standalone="no"

?>

"">

<

svgwidth="500"

height="400"

xmlns=""

>

<

desc

>本例子說明svg的動畫元素desc

>

<

defs

>

<

lineargradient

id="grad1"

x1="0"

y1="0"

x2="0"

y2="100%"

>

<

stop

offset="0%"

style="stop-color: #88f;"

/>

<

stop

offset="100%"

style="stop-color: #008;"

/>

lineargradient

>

defs

>

<

circle

id="rectelement"

cx="50"

cy="50"

r="50"

fill="rgb(255,0,0)"

style="fill: url(#grad1);"

>

<

animate

attributename="cx"

attributetype="xml"

xlink:href="#rectelement"

begin="0s"

dur="9s"

fill="freeze"

from="50"

to="250"

/>

<

animate

attributename="cy"

attributetype="xml"

xlink:href="#rectelement"

begin="0s"

dur="9s"

fill="freeze"

from="150"

to="152"

/>

<

animate

attributename="r"

attributetype="xml"

xlink:href="#rectelement"

begin="0s"

dur="9s"

fill="freeze"

from="50"

to="150"

/>

circle

>

<

gtransform="translate(50,50)"

>

'animatecolor'和'animatetransform'元素的用法。 -->

<

text

id="textelement"

x="0"

y="0"

font-family="宋體-18030"

font-size="18"

font-weight="bold"

visibility="hidden"

>

歡迎光臨!   

<

tspan

dx="-100"

dy="20"

>hello,world!tspan

>

<

setattributename="visibility"

attributetype="css"

to="visible"

begin="4s"

dur="6s"

fill="freeze"

/>

<

animatemotion

path="m 0 20 l 50 120"

begin="4s"

dur="6s"

fill="freeze"

/>

<

animatecolor

attributename="fill"

attributetype="css"

from="rgb(0,0,255)"

to="rgb(128,0,0)"

begin="4s"

dur="6s"

fill="freeze"

/>

<

animatetransform

attributename="transform"

attributetype="xml"

type="rotate"

from="-90"

to="0"

begin="4s"

dur="6s"

fill="freeze"

/>

<

animatetransform

attributename="transform"

attributetype="xml"

type="scale"

from="1"

to="3"

additive="sum"

begin="4s"

dur="6s"

fill="freeze"

/>

text

>

<

text

x="92"

y="275"

style="font-size:16pt;font-weight:bold"

>歡迎光臨【孟憲會之精彩世界】text

>

<

text

x="105"

y="295"

style="font-size:16pt;font-weight:bold"

>

>

g>

svg>

上面例子中,我們可以看到,乙個帶漸變顏色填充的圓,位置逐漸向右下方移動,圓心位置從(50,150)移動到(250,152),同時,半徑也由50增大到150;文字「hello,world!」在4秒時開始出現(可視性visibility由hidden變成了visible),並開始向圓中心方向移動,顏色從#0000ff逐漸變成了#800000,文字方向由-90度逐漸變成0度,文字大小逐漸變化到原來的3倍;文字的變化共持續了6秒。以上**的效果如下圖所示:

SVG中的動畫技術 1

svg中的動畫技術 1 動畫技術是網際網路中不可缺少的乙個重要組成部分,是吸引訪問者的重要手段之一,svg也同樣有能力隨時改變向量圖象外在表現的能力。svg中生成動畫的方式有 1 利用svg提供的動畫元素實現 由於svg的內容可以定義成動態變化的,因此,利用svg提供的各種動畫元素,我們就可以得到各...

SVG中的動畫技術 1

svg中的動畫技術 1 動畫技術是網際網路中不可缺少的乙個重要組成部分,是吸引訪問者的重要手段之一,svg也同樣有能力隨時改變向量圖象外在表現的能力。svg中生成動畫的方式有 1 利用svg提供的動畫元素實現 由於svg的內容可以定義成動態變化的,因此,利用svg提供的各種動畫元素,我們就可以得到各...

SVG中的動畫技術

動畫技術是網際網路 中不可缺少的乙個重要組成部分,是吸引訪問者的重要手段之一,svg也同樣有能力隨時改變向量圖象外在表現的能力。svg中生成動畫的方式有 1 利用svg提供的動畫元素實現 由於svg的內容可以定義成動態變化的,因此,利用svg提供的各種動畫元素,我們就可以得到各種動畫效果,比如 沿某...