1. 程式人生 > >HTML向FLASH傳引數的3種方法

HTML向FLASH傳引數的3種方法

一、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內使用