zoukankan      html  css  js  c++  java
  • [ActionScript3.0] AS3利用ExternalInterface与js通信

    AS3代码,可做文档类;

     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             var t:TextField = new TextField();
    33             t.text = "Send";
    34             t.selectable = false;
    35             t.autoSize = TextFieldAutoSize.LEFT;
    36             t.x = (sendBtn.width - t.width) / 2;
    37             t.y = (sendBtn.height - t.height) / 2;
    38             sendBtn.addChild(t);
    39 
    40             output = new TextField();
    41             output.y = 25;
    42             output.width = 450;
    43             output.height = 325;
    44             output.multiline = true;
    45             output.wordWrap = true;
    46             output.border = true;
    47             output.text = "Initializing...
    ";
    48             addChild(output);
    49 
    50             if (ExternalInterface.available) {
    51                 try {
    52                     output.appendText("Adding callback...
    ");
    53                     ExternalInterface.addCallback("sendToActionScript", receivedFromJavaScript);//as接收js发送过来的信息
    54                     if (checkJavaScriptReady()) {
    55                         output.appendText("JavaScript is ready.
    ");
    56                     } else {
    57                         output.appendText("JavaScript is not ready, creating timer.
    ");
    58                         var readyTimer:Timer = new Timer(100, 0);
    59                         readyTimer.addEventListener(TimerEvent.TIMER, timerHandler);
    60                         readyTimer.start();
    61                     }
    62                 } catch (error:SecurityError) {
    63                     output.appendText("A SecurityError occurred: " + error.message + "
    ");
    64                 } catch (error:Error) {
    65                     output.appendText("An Error occurred: " + error.message + "
    ");
    66                 }
    67             } else {
    68                 output.appendText("External interface is not available for this container.");
    69             }
    70         }
    71         private function receivedFromJavaScript(value:String):void {
    72             output.appendText("JavaScript says: " + value + "
    ");
    73         }
    74         private function checkJavaScriptReady():Boolean {
    75             var isReady:Boolean = ExternalInterface.call("isReady");
    76             return isReady;
    77         }
    78         private function timerHandler(event:TimerEvent):void {
    79             output.appendText("Checking JavaScript status...
    ");
    80             var isReady:Boolean = checkJavaScriptReady();
    81             if (isReady) {
    82                 output.appendText("JavaScript is ready.
    ");
    83                 Timer(event.target).stop();
    84             }
    85         }
    86         private function clickHandler(event:MouseEvent):void {
    87             if (ExternalInterface.available) {
    88                 ExternalInterface.call("sendToJavaScript", input.text);//as向js发送信息
    89             }
    90         }
    91     }
    92 }

    JS代码,方式一;

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

    JS代码,方式二;(需要文件 swfobject.js)

     1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
     2 <html>
     3 <head>
     4  <title>ExternalInterfaceExample</title>
     5  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     6  <meta name="language" content="en" />
     7  <meta name="description" content="" />
     8  <meta name="keywords" content="" />
     9  <script type="text/javascript" src="swfobject.js"></script>
    10  <script type="text/javascript">
    11       swfobject.registerObject("ExternalInterfaceExample", "9.0.0", "expressInstall.swf", callbackFn);
    12 
    13       function sendToJavaScript(value) {
    14            document.getElementById("output").value += "ActionScript says: " + value + "
    ";
    15       }
    16 
    17       function ExternalInterfaceExample_DoFSCommand(command, args) {//此方法是用于fscommand() 与js通信,在此可忽略
    18           document.getElementById("output").value += "ActionScript says: " + args + "
    ";
    19       }
    20 
    21      function callbackFn(status) {
    22          if (status.success) {
    23              var obj = status.ref;
    24              document.getElementById("but").onclick = function() {
    25                  if (obj && typeof obj.sendToActionScript!= "undefined") {
    26                      obj.sendToActionScript(document.getElementById("input").value);
    27                  }
    28              };
    29          }
    30       }
    31 
    32  </script>
    33 
    34 </head>
    35 <body>
    36  
    37      <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
    38              id="ExternalInterfaceExample" width="500" height="375"
    39              codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab">
    40          <param name="movie" value="ExternalInterfaceExample.swf" />
    41          <param name="quality" value="high" />
    42          <param name="bgcolor" value="#869ca7" />
    43          <param name="allowScriptAccess" value="sameDomain" />
    44          <embed src="ExternalInterfaceExample.swf" quality="high" bgcolor="#869ca7"
    45              width="500" height="375" name="ExternalInterfaceExample" align="middle"
    46              play="true" loop="false" quality="high" allowScriptAccess="sameDomain"
    47              type="application/x-shockwave-flash"
    48              pluginspage="http://www.macromedia.com/go/getflashplayer">
    49          </embed>
    50      </object>
    51  
    52      <form name="form1" onsubmit="return false;">
    53          <input type="text" name="input" id="input" value="" />
    54          <input type="button" value="ExternalInterface" id="but"/><br />
    55          <textarea cols="60" rows="20" name="output" id="output" readonly="true">Initializing...</textarea>
    56      </form> 
    57  </body>
    58 
    59 </html>
  • 相关阅读:
    opencv-learnopencv-Facial Landmark Detection
    【OpenCV】Learn OpenCV
    leetcode-1-TwoNums
    【c++基础】判断是否到文件末尾-eof函数
    【c++基础】int转string自动补零
    【linux】如何退出shell终端
    【机器学习算法】bagging算法
    【机器学习算法】Boostrapping算法
    【python基础】如何注释代码块
    【机器学习算法】cascade classifier级联分类器
  • 原文地址:https://www.cnblogs.com/frost-yen/p/4292547.html
Copyright © 2011-2022 走看看