AS 与 js 交互示例

ActionScript/Flash代码 

Java代码 
  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(0080181010);  
  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(1000);  
  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.     }  
  85. }  





JS/HTML代码 

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



说明: 
在Flash的输入框中输入信息,点击发送,可以在flash页面上显示出来; 
在HTML的输入框中输入信息,点击发送,可以在Flash的文本框中显示出来
 

posted @ 2010-10-26 14:53  rob_2010  阅读(232)  评论(0编辑  收藏  举报