07.26
昨天上課時答應班上同學要示範如何在ActionScript 2.0中擷取HTML的參數來使用,當然今天就要來完成承諾囉,透過的方法是使用flashVars這個東西,不過要小心的是由於不同瀏覽器的版本差異,會有不同的表示法,為了以防萬一我將所有版本的寫法都放在這。
我們期望能將透過HTML將參數導引至Flash中,假設傳入的參數為urlVar,那麼就要在HTML中配合參數標籤來嵌入變數內容,嵌入的方法是在<object>的邊嵌內增加一個叫做flashVars的參數,語法如下:
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="省略....." width="200" height="100" id="flashvarsDemo" align="middle">
<param name="allowScriptAccess" value="sameDomain" />
<param name="allowFullScreen" value="false" />
<param name="movie" value="flashvarsDemo.swf" />
<param name="flashVars" value="urlVar=anistar" />
<param name="quality" value="high" />
<param name="bgcolor" value="#ffffff" />
<embed src="flashvarsDemo.swf" mce_src="flashvarsDemo.swf" flashVars="urlVar=anistar" quality="high" bgcolor="#ffffff" width="200" height="100" name="flashvarsDemo" align="middle" allowScriptAccess="sameDomain" allowFullScreen="false" type="application/x-shockwave-flash"/>
</object>
並在ActionSctipt中加入這段程式碼:
param_txt.text=_root.urlVar;
不過完成後依然不能執行,會在Flash中顯示undefined.

看了一下發現兇手是IE瀏覽器,因為新版的IE會自動停用Active X,所以Adobe為了解決這個問題,寫了一段JavaScript來配合啟動Active X,因此除了原來的參數外,JavaScript的部份也要以起解決才行,請將Flash匯出的HTML修改如下:
<script language="javascript">
if (AC_FL_RunContent == 0) {
alert("這個頁面必須具備 AC_RunActiveContent.js。");
} else {
AC_FL_RunContent(
'codebase', '省略.....',
'width', '200',
'height', '100',
'src', 'flashvarsDemo',
'flashVars', 'urlVar=anistar',
'quality', 'high',
'pluginspage', 'http://www.macromedia.com/go/getflashplayer',
'align', 'middle',
'play', 'true',
'loop', 'true',
'scale', 'showall',
'wmode', 'window',
'devicefont', 'false',
'id', 'flashvarsDemo',
'bgcolor', '#ffffff',
'name', 'flashvarsDemo',
'menu', 'true',
'allowFullScreen', 'false',
'allowScriptAccess','sameDomain',
'movie', 'flashvarsDemo',
'salign', ''
); //end AC code
}
</script>
修改完後就可以正確執行了,執行的效果如同下圖,Flash可以從FlashVars參數中得到外部資料。

順便提一下,若是想帶多個參數進去,用UrlString的方式代入就可以了。
相關文章:
文章內容由宋志峰[ANISTAR]撰寫,引用分享請以鏈結形式註明出處與原始作者。


可以在flash裡加一個iFrame,將html 網頁 引到flash之中嗎?
因為我做一個整個皮,中間是loadmovie進來的,但現在中間要加入一個html
抱歉想問的是as2.0還有我不會flex…
不行, Flash是不能用iframe的, 因為那是HTML的東西, 請在HTML中處理這個問題, 我們頂多只能在Flash中去呼叫JavaScript來控制HTML.