一、SWF地址后使用參數傳遞符“?”,
HTML頁面中插入SWF文件最常用的就是使用Object標簽和Embed標簽結合的方式,這也是Adobe的推薦方式:
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" width="400" height="300" id="flashvars" align="center">
<param name="allowscriptAccess" value="sameDomain" />
<param name="movie" value="test.swf?xname=xvalue&xname2=xvalue2" />
<param name="quality" value="high" /><param name="bgcolor" value="#ffffff" />
<embed quality="high" bgcolor="#ffffff" width="400" src="test.swf?xname=xvalue&xname2=xvalue2" height="300" allowscriptAccess="sameDomain" name="flashvars" align="center" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />
</object>
swf地址后面通過類似於URL中GET方式傳參的方法來個SWF傳遞參數,例如上面代碼在頁面完全加載完畢時,它已經給SWF文件寫入了兩個變量:uid=12和uname=vsky。
二、FlashVars傳遞
你可以查閱FLASH幫助文檔來看FlashVars的官方定義。其實在HTML語法中,這是一個被很多新手所忽視的屬性,同樣以上面的參數為例,下面用FlashVars來傳遞變量:
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" width="400" height="300" id="flashvars" align="center">
<param name="allowscriptAccess" value="sameDomain" />
<param name="movie" value="demo.swf" />
<param name="FlashVars" value="xname=xvalue&xname2=xvalue2" />
<param name="quality" value="high" /><param name="bgcolor" value="#ffffff" />
<embed src="demo.swf" FlashVars="xname=xvalue&xname2=xvalue2" allowscriptAccess="sameDomain" quality="high" bgcolor="#ffffff" width="400" height="300" name="flashvars" align="center" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />
</object>
跟方式一相同,它也是直接給FLASH里添加了這兩個變量。推薦使用此方式,結合SWFObject的使用,使用FlashVars來傳遞變量有很多好處,例如代碼清楚,輕易治理,瀏覽其兼容,符合標准。
三、JS控制
對於客戶端頁面中的資源,JS通過DOM結構來控制它們可以說是隨心所欲的,FLASH也不例外,下面是Flash Player的Javascript方法一覽表:
Play() —————————————- 播放動畫
StopPlay()————————————停止動畫
IsPlaying()———————————– 動畫是否正在播放
GotoFrame(frame_number)—————- 跳轉到某幀
TotalFrames()——————————- 獲取動畫總幀數
CurrentFrame()——————————回傳當前動畫所在幀數-1
Rewind()————————————-使動畫返回第一幀
SetZoomRect(left,top,right,buttom)——-放大指定區域
Zoom(percent)——————————改變動畫大小
Pan(x_position,y_position,unit)————使動畫在x,y方向上平移
PercentLoaded()—————————-返回動畫被載入的百分比
LoadMovie(level_number,path)———– 加載動畫
TGotoFrame(movie_clip,frame_number)- movie_clip跳轉到指定幀數
TGotoLabel(movie_clip,label_name)—— movie_clip跳轉到指定標簽
TCurrentFrame(movie_clip)————— 回傳movie_clip當前幀-1
TCurrentLabel(movie_clip)—————–回傳movie_clip當前標簽
TPlay(movie_clip)—————————播放movie_clip
TStopPlay(movie_clip)———————-停止movie_clip的播放
GetVariable(variable_name)—————–獲取變量
SetVariable(variable_name, variable_value)
TCallFrame(movie_clip,frame_number)—call指定幀上的action
TCallLabel(movie_clip,label)—————-call指定標簽上的action
TGetProperty(movie_clip,property)——–獲取movie_clip的指定屬性
TSetProperty(movie_clip,property,number)———-設置movie_clip的指定屬性
在這里我們只需要使用的是SetVariable方法,JS通過調用此方法能夠直接更改SWF中的變量值。首先我們需要定義插入的SWF的 ID,例如id為VskyDemo,那么我們可以通過下面的JS語句來完成SWF內部變量的置:
document.getElementById("xswf").SetVariable("xname","xvalue"); //不同瀏覽器獲取FLASH對象方法不同
變量名xname可以作為已聲名的變量直接在FLASH內使用