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

[AS3]as3官方使用ExternalInterface类实例源代码

时间:2014-01-04 16:06未知
以下示例显示如何使用 ExternalInterface 类 (flash.external.ExternalInterface) 将字符串从 Flash Player 发送到使用 JavaScript alert() 函数在其中显示的 HTML 容器。ActionScriptExamples.com 提供的示例。

以下示例显示如何使用 ExternalInterface 类 (flash.external.ExternalInterface) 将字符串从 Flash Player 发送到使用 JavaScript alert() 函数在其中显示的 HTML 容器。ActionScriptExamples.com 提供的示例。 ExternalInterfaceExample.as 以下示例演示了在 Flash Player 与 HTML 容器之间发送数据的过程。

  1. package { 
  2.     import flash.display.Sprite; 
  3.     import flash.events.*; 
  4.     import flash.external.ExternalInterface; 
  5.     import flash.text.TextField; 
  6.     import flash.utils.Timer; 
  7.     import flash.text.TextFieldType; 
  8.     import flash.text.TextFieldAutoSize; 
  9.  
  10.     public class ExternalInterfaceExample extends Sprite { 
  11.         private var input:TextField; 
  12.         private var output:TextField; 
  13.         private var sendBtn:Sprite; 
  14.  
  15.         public function ExternalInterfaceExample() { 
  16.             input = new TextField(); 
  17.             input.type = TextFieldType.INPUT; 
  18.             input.background = true
  19.             input.border = true
  20.             input.width = 350
  21.             input.height = 18
  22.             addChild(input); 
  23.  
  24.             sendBtn = new Sprite(); 
  25.             sendBtn.mouseEnabled = true
  26.             sendBtn.x = input.width + 10; 
  27.             sendBtn.graphics.beginFill(0xCCCCCC); 
  28.             sendBtn.graphics.drawRoundRect(0, 0, 80, 18, 10, 10); 
  29.             sendBtn.graphics.endFill(); 
  30.             sendBtn.addEventListener(MouseEvent.CLICK, clickHandler); 
  31.             addChild(sendBtn); 
  32.  
  33.             output = new TextField(); 
  34.             output.y = 25
  35.             output.width = 450
  36.             output.height = 325
  37.             output.multiline = true
  38.             output.wordWrap = true
  39.             output.border = true
  40.             output.text = "Initializing...\n"
  41.             addChild(output); 
  42.  
  43.             if (ExternalInterface.available) { 
  44.                 try { 
  45.                     output.appendText("Adding callback...\n"); 
  46.                     ExternalInterface.addCallback("sendToActionScript", receivedFromJavaScript); 
  47.                     if (checkJavaScriptReady()) { 
  48.                         output.appendText("JavaScript is ready.\n"); 
  49.                     } else { 
  50.                         output.appendText("JavaScript is not ready, creating timer.\n"); 
  51.                         var readyTimer:Timer = new Timer(100, 0); 
  52.                         readyTimer.addEventListener(TimerEvent.TIMER, timerHandler); 
  53.                         readyTimer.start(); 
  54.                     } 
  55.                 } catch (error:SecurityError) { 
  56.                     output.appendText("A SecurityError occurred: " + error.message + "\n"); 
  57.                 } catch (error:Error) { 
  58.                     output.appendText("An Error occurred: " + error.message + "\n"); 
  59.                 } 
  60.             } else { 
  61.                 output.appendText("External interface is not available for this container."); 
  62.             } 
  63.         } 
  64.         private function receivedFromJavaScript(value:String):void { 
  65.             output.appendText("JavaScript says: " + value + "\n"); 
  66.         } 
  67.         private function checkJavaScriptReady():Boolean { 
  68.             var isReady:Boolean = ExternalInterface.call("isReady"); 
  69.             return isReady; 
  70.         } 
  71.         private function timerHandler(event:TimerEvent):void { 
  72.             output.appendText("Checking JavaScript status...\n"); 
  73.             var isReady:Boolean = checkJavaScriptReady(); 
  74.             if (isReady) { 
  75.                 output.appendText("JavaScript is ready.\n"); 
  76.                 Timer(event.target).stop(); 
  77.             } 
  78.         } 
  79.         private function clickHandler(event:MouseEvent):void { 
  80.             if (ExternalInterface.available) { 
  81.                 ExternalInterface.call("sendToJavaScript", input.text); 
  82.             } 
  83.         } 
  84.     } 

为了测试前面的 ActionScript 代码,请使用以下 HTML 模板嵌入生成的 SWF 文件:

  1. <html lang="en"> 
  2. <head> 
  3. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
  4. <title>ExternalInterfaceExample</title> 
  5. <script language="JavaScript"> 
  6.     var jsReady = false
  7.     function isReady() { 
  8.         return jsReady; 
  9.     } 
  10.     function pageInit() { 
  11.         jsReady = true
  12.         document.forms["form1"].output.value += "\n" + "JavaScript is ready.\n"; 
  13.     } 
  14.     function thisMovie(movieName) { 
  15.         if (navigator.appName.indexOf("Microsoft") != -1) { 
  16.             return window[movieName]; 
  17.         } else { 
  18.             return document[movieName]; 
  19.         } 
  20.     } 
  21.     function sendToActionScript(value) { 
  22.         thisMovie("ExternalInterfaceExample").sendToActionScript(value); 
  23.     } 
  24.     function sendToJavaScript(value) { 
  25.         document.forms["form1"].output.value += "ActionScript says: " + value + "\n"; 
  26.     } 
  27. </script> 
  28. </head> 
  29. <body onload="pageInit();"> 
  30.  
  31.     <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" 
  32.             id="ExternalInterfaceExample" width="500" height="375" 
  33.             codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab"> 
  34.         <param name="movie" value="ExternalInterfaceExample.swf" /> 
  35.         <param name="quality" value="high" /> 
  36.         <param name="bgcolor" value="#869ca7" /> 
  37.         <param name="allowScriptAccess" value="sameDomain" /> 
  38.         <embed src="ExternalInterfaceExample.swf" quality="high" bgcolor="#869ca7" 
  39.             width="500" height="375" name="ExternalInterfaceExample" align="middle" 
  40.             play="true" loop="false" quality="high" allowScriptAccess="sameDomain" 
  41.             type="application/x-shockwave-flash" 
  42.             pluginspage="http://www.macromedia.com/go/getflashplayer"> 
  43.         </embed> 
  44.     </object> 
  45.  
  46.     <form name="form1" onsubmit="return false;"> 
  47.         <input type="text" name="input" value="" /> 
  48.         <input type="button" value="Send" onclick="sendToActionScript(this.form.input.value);" /><br /> 
  49.         <textarea cols="60" rows="20" name="output" readonly="true">Initializing...</textarea> 
  50.     </form> 
  51.  
  52. </body> 
  53. </html> 

 

热门文章推荐

请稍候...

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

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