[ActionScript3.0] AS3利用ExternalInterface与js通信

摘要:
AS3代码,可做文档类;1package{2importflash.display.Sprite;3importflash.events.*;4importflash.external.ExternalInterface;5importflash.text.TextField;6importflash.utils.Timer;7importflash.text.TextFieldType;8imp

AS3代码,可做文档类;

1 package {
2     importflash.display.Sprite;
3     import flash.events.*;
4     importflash.external.ExternalInterface;
5     importflash.text.TextField;
6     importflash.utils.Timer;
7     importflash.text.TextFieldType;
8     importflash.text.TextFieldAutoSize;
9 
10     public class ExternalInterfaceExample extendsSprite {
11         private varinput:TextField;
12         private varoutput:TextField;
13         private varsendBtn:Sprite;
14 
15         public functionExternalInterfaceExample() {
16             input = newTextField();
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 = newSprite();
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 = newTextField();
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 = newTextField();
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             returnisReady;
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      functionisReady() {
12          returnjsReady;
13 }
14      functionpageInit() {
15          jsReady = true;
16          document.forms["form1"].output.value += "
" + "JavaScript is ready.
";
17 }
18      functionthisMovie(movieName) {
19          if (navigator.appName.indexOf("Microsoft") != -1) {
20              returnwindow[movieName];
21          } else{
22              returndocument[movieName];
23 }
24 }
25      functionsendToActionScript(value) {
26          thisMovie("ExternalInterfaceExample").sendToActionScript(value);
27 }
28      functionsendToJavaScript(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                   
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="http://t.zoukankan.com/ExternalInterfaceExample.swf" quality="high" bgcolor="#869ca7"
44                  name="ExternalInterfaceExample"  
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="http://t.zoukankan.com/swfobject.js"></script>
10  <script type="text/javascript">
11       swfobject.registerObject("ExternalInterfaceExample", "9.0.0", "expressInstall.swf", callbackFn);
12 
13       functionsendToJavaScript(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      functioncallbackFn(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                   
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="http://t.zoukankan.com/ExternalInterfaceExample.swf" quality="high" bgcolor="#869ca7"
45                  name="ExternalInterfaceExample"  
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"   value="" />
54          <input type="button" value="ExternalInterface"  /><br />
55          <textarea cols="60" rows="20" name="output"   readonly="true">Initializing...</textarea>
56      </form> 
57  </body>
58 
59 </html>

免责声明:文章转载自《[ActionScript3.0] AS3利用ExternalInterface与js通信》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇2014年腾讯实习生笔试题解析php 递归 迭代下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

WPF 2D绘图(3)PathGeometry

PathGeometry可以创建任意的2D图形形状。 其内部通过PathSegment集合来实现 如画2个三角形 <Path Stroke="Black" StrokeThickness="1"> <Path.Data> <PathGeometry>...

C# CheckedListBox控件的用法大全

checklistbox控件  1.添加项 checkedListBox1.Items.Add("蓝色"); checkedListBox1.Items.Add("红色"); checkedListBox1.Items.Add("黄色"); 2. 判断第i项是否选中,选中为true,否则为false if(checkedListBox1.GetItemC...

cocos creator3.0.0 vscode配置

settings.json { "debug.javascript.unmapMissingSources": true, "search.exclude": { "**/node_modules": true, "**/bower_components": true, "bui...

最简单实用的MongoDB安装教程:在CentOS中使用 yum 安装MongoDB及服务器端配置详解

一、准备工作: 运行yum命令查看MongoDB的包信息 [root@vm ~]# yum info mongo-10gen (提示没有相关匹配的信息,) 说明你的centos系统中的yum源不包含MongoDB的相关资源,所以要在使用yum命令安装MongoDB前需要增加yum源,也就是在 /etc/yum.repos.d/目录中增加 *.rep...

NXOpen 批量导出STP、IGS、DWG、DXF、PDF(五合一)

C++ 关键代码 //导出STPvoid ExportFile::ExportSTPfile(){    try    {  UF_initialize();    string  filepath = strDir +  "\" ;//拼接路径   //获取图层过滤   PropertyList *stringLayerProps = stringLay...

网上看到的比较全的关于C#操作EXCEL常见操作集合,比较全,写的不错

原文地址:http://hi.baidu.com/kjkj911/blog/item/0ecc3ec7855dd6d4d100600f.html private _Workbook _workBook = null; private Worksheet _workSheet = null; private Excel.Application _excelA...