2007
07.26

在ActionScript 2.0中擷取HTML中的參數(FlashVars)使用

昨天上課時答應班上同學要示範如何在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.
flashvars.gif

看了一下發現兇手是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參數中得到外部資料。

flashvars1.jpg

 順便提一下,若是想帶多個參數進去,用UrlString的方式代入就可以了。


相關文章:
  • Facebook 的ActionScript API 更新到 3.3版
  • Flash on iPhone,代誌就這麼發生了
  • 用ActionScript讀取相片中的exif資訊
  • 現場直擊Flash/Flex特效瘋-8/26活動內容預告
  • Bitmap與BitmapData
  • 本文引用:
    文章內容由宋志峰[ANISTAR]撰寫,引用分享請以鏈結形式註明出處與原始作者。

    3 comments so far

    Add Your Comment
    1. 可以在flash裡加一個iFrame,將html 網頁 引到flash之中嗎?
      因為我做一個整個皮,中間是loadmovie進來的,但現在中間要加入一個html

      • 抱歉想問的是as2.0還有我不會flex…

      • 不行, Flash是不能用iframe的, 因為那是HTML的東西, 請在HTML中處理這個問題, 我們頂多只能在Flash中去呼叫JavaScript來控制HTML.