AS3和JS通訊

  • 2020 年 1 月 13 日
  • 筆記

運行環境:需要安裝IIS,創建網站目錄

AS3和外部容器通訊方法比較簡單:

import flash.text.TextField;    var txt:TextField = new TextField();  this.addChild(txt);  txt.text = "等待...";    //向JS註冊方法,JS調用as3Function這個方法,就是執行callback這個方法  ExternalInterface.addCallback("as3Function",callback);  function callback($param:String):void  {  	txt.text = $param;  }  //直接調用SJ的方法getReady  ExternalInterface.call("getReady");

注意:先調用ExternalInterface.addCallback,再調用ExternalInterface.call

JS程式碼:

<html lang="en">  <head>  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  <title>FLASH與JS交互</title>  <script language="JavaScript">  	var jsReady = false;      function pageInit()  	{  		jsReady = true;  	}  	/**頁面沒有載入完成會返回false,flash需要再次調用此方法*/  	function getReady()  	{  		if(jsReady)  		{  			//as3Function方法是flash註冊的方法  			getSwfInstance("FlashID").as3Function("成功");  		}  		else  		{  			return jsReady;  		}      }  	/**獲取flash,這裡注意:<embed>元素name屬性是獲取的根據*/  	function getSwfInstance(name)  	{  		if (navigator.appName.indexOf("Microsoft") != -1)  		{   			return window[name];   		}  		else  		{   			return document[name];   		}  	}  </script>  </head>  <body onLoad="pageInit()">      <object id="flash" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="550" height="400"      codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0">          <param name="movie" value="test.swf">          <param name="quality" value="high">          <param name="bgcolor" value="#F0F0F0">          <param name="menu" value="false">          <param name="wmode" value="opaque">          <param name="FlashVars" value="">          <param name="allowScriptAccess" value="sameDomain">          <embed id="embedID" src="test.swf"              name="FlashID"              width="550"              height="400"              align="middle"              quality="high"              bgcolor="#f0fff8"              menu="false"              play="true"              loop="false"              FlashVars=""              allowScriptAccess="sameDomain"              type="application/x-shockwave-flash"              pluginspage="http://www.adobe.com/go/getflashplayer">          </embed>  	</object>  </body>  </html>

注意:swf的文件嵌入到html中的方法比較多,特別關鍵的要可以獲取到所嵌入的swf對象,通過程式碼你可發現獲取swf對象,是通過embed中的name屬性。