·您当前的位置:首页 > 技术教程 > AS2与AS3技术 >

[AS3]as3与js通信(ExternalInterface的实际应用代码)

时间:2014-08-20 13:51酷播
以下示例演示了在 Flash Player 与 HTML 容器之间发送数据的过程。

以下示例演示了在 Flash Player 与 HTML 容器之间发送数据的过程。

  1. 以下示例演示了在 Flash Player 与 HTML 容器之间发送数据的过程。  
  2.  
  3. package { 
  4.     import flash.display.Sprite; 
  5.     import flash.events.*; 
  6.     import flash.external.ExternalInterface; 
  7.     import flash.text.TextField; 
  8.     import flash.utils.Timer; 
  9.     import flash.text.TextFieldType; 
  10.     import flash.text.TextFieldAutoSize; 
  11.  
  12.     public class ExternalInterfaceExample extends Sprite { 
  13.         private var input:TextField; 
  14.         private var output:TextField; 
  15.         private var sendBtn:Sprite; 
  16.  
  17.         public function ExternalInterfaceExample() { 
  18.             input = new TextField(); 
  19.             input.type = TextFieldType.INPUT; 
  20.             input.background = true
  21.             input.border = true
  22.             input.width = 350
  23.             input.height = 18
  24.             addChild(input); 
  25.  
  26.             sendBtn = new Sprite(); 
  27.             sendBtn.mouseEnabled = true
  28.             sendBtn.x = input.width + 10; 
  29.             sendBtn.graphics.beginFill(0xCCCCCC); 
  30.             sendBtn.graphics.drawRoundRect(0, 0, 80, 18, 10, 10); 
  31.             sendBtn.graphics.endFill(); 
  32.             sendBtn.addEventListener(MouseEvent.CLICK, clickHandler); 
  33.             addChild(sendBtn); 
  34.  
  35.             output = new TextField(); 
  36.             output.y = 25
  37.             output.width = 450
  38.             output.height = 325
  39.             output.multiline = true
  40.             output.wordWrap = true
  41.             output.border = true
  42.             output.text = "Initializing...\n"
  43.             addChild(output); 
  44.  
  45.             if (ExternalInterface.available) { 
  46.                 try { 
  47.                     output.appendText("Adding callback...\n"); 
  48.                     ExternalInterface.addCallback("sendToActionScript", receivedFromJavaScript); 
  49.                     if (checkJavaScriptReady()) { 
  50.                         output.appendText("JavaScript is ready.\n"); 
  51.                     } else { 
  52.                         output.appendText("JavaScript is not ready, creating timer.\n"); 
  53.                         var readyTimer:Timer = new Timer(100, 0); 
  54.                         readyTimer.addEventListener(TimerEvent.TIMER, timerHandler); 
  55.                         readyTimer.start(); 
  56.                     } 
  57.                 } catch (error:SecurityError) { 
  58.                     output.appendText("A SecurityError occurred: " + error.message + "\n"); 
  59.                 } catch (error:Error) { 
  60.                     output.appendText("An Error occurred: " + error.message + "\n"); 
  61.                 } 
  62.             } else { 
  63.                 output.appendText("External interface is not available for this container."); 
  64.             } 
  65.         } 
  66.         private function receivedFromJavaScript(value:String):void { 
  67.             output.appendText("JavaScript says: " + value + "\n"); 
  68.         } 
  69.         private function checkJavaScriptReady():Boolean { 
  70.             var isReady:Boolean = ExternalInterface.call("isReady"); 
  71.             return isReady; 
  72.         } 
  73.         private function timerHandler(event:TimerEvent):void { 
  74.             output.appendText("Checking JavaScript status...\n"); 
  75.             var isReady:Boolean = checkJavaScriptReady(); 
  76.             if (isReady) { 
  77.                 output.appendText("JavaScript is ready.\n"); 
  78.                 Timer(event.target).stop(); 
  79.             } 
  80.         } 
  81.         private function clickHandler(event:MouseEvent):void { 
  82.             if (ExternalInterface.available) { 
  83.                 ExternalInterface.call("sendToJavaScript", input.text); 
  84.             } 
  85.         } 
  86.     } 
  87.  
  88. 为了测试前面的 ActionScript 代码,请使用以下 HTML 模板嵌入生成的 SWF 文件:  
  89.  <!-- saved from url=(0014)about:internet --> 
  90.  <html lang="en"> 
  91.  <head> 
  92.  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
  93.  <title>ExternalInterfaceExample</title> 
  94.  <script language="JavaScript"> 
  95.      var jsReady = false
  96.      function isReady() { 
  97.          return jsReady; 
  98.      } 
  99.      function pageInit() { 
  100.          jsReady = true
  101.          document.forms["form1"].output.value += "\n" + "JavaScript is ready.\n"; 
  102.      } 
  103.      function thisMovie(movieName) { 
  104.          if (navigator.appName.indexOf("Microsoft") != -1) { 
  105.              return window[movieName]; 
  106.          } else { 
  107.              return document[movieName]; 
  108.          } 
  109.      } 
  110.      function sendToActionScript(value) { 
  111.          thisMovie("ExternalInterfaceExample").sendToActionScript(value); 
  112.      } 
  113.      function sendToJavaScript(value) { 
  114.          document.forms["form1"].output.value += "ActionScript says: " + value + "\n"; 
  115.      } 
  116.  </script> 
  117.  </head> 
  118.  <body onload="pageInit();"> 
  119.   
  120.      <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" 
  121.              id="ExternalInterfaceExample" width="500" height="375" 
  122.              codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab"> 
  123.          <param name="movie" value="ExternalInterfaceExample.swf" /> 
  124.          <param name="quality" value="high" /> 
  125.          <param name="bgcolor" value="#869ca7" /> 
  126.          <param name="allowScriptAccess" value="sameDomain" /> 
  127.          <embed src="ExternalInterfaceExample.swf" quality="high" bgcolor="#869ca7" 
  128.              width="500" height="375" name="ExternalInterfaceExample" align="middle" 
  129.              play="true" loop="false" quality="high" allowScriptAccess="sameDomain" 
  130.              type="application/x-shockwave-flash" 
  131.              pluginspage="http://www.macromedia.com/go/getflashplayer"> 
  132.          </embed> 
  133.      </object> 
  134.   
  135.      <form name="form1" onsubmit="return false;"> 
  136.          <input type="text" name="input" value="" /> 
  137.          <input type="button" value="Send" onclick="sendToActionScript(this.form.input.value);" /><br /> 
  138.          <textarea cols="60" rows="20" name="output" readonly="true">Initializing...</textarea> 
  139.      </form> 
  140.   
  141.  </body> 
  142.  </html> 

 

热门文章推荐

请稍候...

保利威视云平台-轻松实现点播直播视频应用

酷播云数据统计分析跨平台播放器