- 浏览: 590084 次
- 性别:
- 来自: 广州
文章分类
最新评论
-
smilezhouwei:
请问CruiseControl在加载jar包时,由于jar包过 ...
修改CruiseControl的端口 -
zengxuefei:
不起作用啊,有bug
Flex+Java多文件上传 -
lzeus:
模仿的tomcat源码吧?
java事件处理机制(自定义事件)【转】 -
yangbobestone:
...
FreeMarker整合Struts2 -
fddjxllren:
那是因为你没配置事务,楼主的那个主要是针对事务的写法
Spring2.5+JUnit4单元测试
Flash与Javascript交互时可用ExternalInterface类
ExternalInterface 类是外部 API,这是一个在 ActionScript 和 Flash Player 容器之间实现直接通信的应用程序编程接口,例如,包含 JavaScript 的 HTML 页。Adobe 建议使用 ExternalInterface 实现 JavaScript 与 ActionScript 之间的所有通信。
在 Flash Player 中,可以使用 HTML 页中的 JavaScript 来调用 ActionScript 函数。ActionScript 函数可以返回一个值,JavaScript 会立即接收它作为该调用的返回值。
在以下浏览器和操作系统的组合中可以使用 ExternalInterface 类:
Internet Explorer 5.0 及更高版本 | Windows | |
Netscape 8.0 及更高版本 | Windows | MacOS |
Mozilla 1.7.5 及更高版本 | Windows | MacOS |
Firefox 1.0 及更高版本 | Windows | MacOS |
Safari 1.3 及更高版本 | MacOS |
适用于 Linux 的 Flash Player 9.0.31.0 及更高版本在以下浏览器中支持 ExternalInterface 类:
Mozilla 1.7.x 及更高版本 |
Firefox 1.5.0.7 及更高版本 |
SeaMonkey 1.0.5 及更高版本 |
ExternalInterface 类要求用户的 Web 浏览器支持 ActiveX® 或由某些浏览器公开的 NPRuntime API 以实现插件脚本处理。即使上面未列出浏览器和操作系统组合,如果它们支持 NPRuntime API,则它们也应该支持 ExternalInterface 类。请访问 http://www.mozilla.org/projects/plugins/npruntime.html。
注意:在将 SWF 文件嵌入到 HTML 页中时,请确保 object
和 embed
标签的 id
和 name
属性不包含以下字符:
. - + * / \
利用 ActionScript,可以在 HTML 页上执行以下操作:
- 调用任何 JavaScript 函数。
- 传递任意数量、具有任意名称的参数。
- 传递各种数据类型(Boolean、Number、String 等等)。
- 接收来自 JavaScript 函数的返回值。
通过在 HTML 页上使用 JavaScript,可以:
- 调用 ActionScript 函数。
- 使用标准的函数调用表示法传递参数。
- 将值返回给 JavaScript 函数。
Flash Player 当前不支持嵌入到 HTML 表单中的 SWF 文件。
注意:Adobe AIR 当前不支持 ExternalInterface 类。
以下示例演示了在 Flash Player 与 HTML 容器之间发送数据的过程。
package { import flash.display.Sprite; import flash.events.*; import flash.external.ExternalInterface; import flash.text.TextField; import flash.utils.Timer; import flash.text.TextFieldType; import flash.text.TextFieldAutoSize; public class ExternalInterfaceExample extends Sprite { private var input:TextField; private var output:TextField; private var sendBtn:Sprite; public function ExternalInterfaceExample() { input = new TextField(); input.type = TextFieldType.INPUT; input.background = true; input.border = true; input.width = 350; input.height = 18; addChild(input); sendBtn = new Sprite(); sendBtn.mouseEnabled = true; sendBtn.x = input.width + 10; sendBtn.graphics.beginFill(0xCCCCCC); sendBtn.graphics.drawRoundRect(0, 0, 80, 18, 10, 10); sendBtn.graphics.endFill(); sendBtn.addEventListener(MouseEvent.CLICK, clickHandler); addChild(sendBtn); output = new TextField(); output.y = 25; output.width = 450; output.height = 325; output.multiline = true; output.wordWrap = true; output.border = true; output.text = "Initializing...\n"; addChild(output); if (ExternalInterface.available) { try { output.appendText("Adding callback...\n"); ExternalInterface.addCallback("sendToActionScript", receivedFromJavaScript); if (checkJavaScriptReady()) { output.appendText("JavaScript is ready.\n"); } else { output.appendText("JavaScript is not ready, creating timer.\n"); var readyTimer:Timer = new Timer(100, 0); readyTimer.addEventListener(TimerEvent.TIMER, timerHandler); readyTimer.start(); } } catch (error:SecurityError) { output.appendText("A SecurityError occurred: " + error.message + "\n"); } catch (error:Error) { output.appendText("An Error occurred: " + error.message + "\n"); } } else { output.appendText("External interface is not available for this container."); } } private function receivedFromJavaScript(value:String):void { output.appendText("JavaScript says: " + value + "\n"); } private function checkJavaScriptReady():Boolean { var isReady:Boolean = ExternalInterface.call("isReady"); return isReady; } private function timerHandler(event:TimerEvent):void { output.appendText("Checking JavaScript status...\n"); var isReady:Boolean = checkJavaScriptReady(); if (isReady) { output.appendText("JavaScript is ready.\n"); Timer(event.target).stop(); } } private function clickHandler(event:MouseEvent):void { if (ExternalInterface.available) { ExternalInterface.call("sendToJavaScript", input.text); } } } }
为了测试前面的 ActionScript 代码,请使用以下 HTML 模板嵌入生成的 SWF 文件:
<!-- saved from url=(0014)about:internet --> <html lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>ExternalInterfaceExample</title> <script language="JavaScript"> var jsReady = false; function isReady() { return jsReady; } function pageInit() { jsReady = true; document.forms["form1"].output.value += "\n" + "JavaScript is ready.\n"; } function thisMovie(movieName) { if (navigator.appName.indexOf("Microsoft") != -1) { return window[movieName]; } else { return document[movieName]; } } function sendToActionScript(value) { thisMovie("ExternalInterfaceExample").sendToActionScript(value); } function sendToJavaScript(value) { document.forms["form1"].output.value += "ActionScript says: " + value + "\n"; } </script> </head> <body onload="pageInit();"> <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" id="ExternalInterfaceExample" width="500" height="375" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab"> <param name="movie" value="ExternalInterfaceExample.swf" /> <param name="quality" value="high" /> <param name="bgcolor" value="#869ca7" /> <param name="allowScriptAccess" value="sameDomain" /> <embed src="ExternalInterfaceExample.swf" quality="high" bgcolor="#869ca7" width="500" height="375" name="ExternalInterfaceExample" align="middle" play="true" loop="false" quality="high" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer"> </embed> </object> <form name="form1" onsubmit="return false;"> <input type="text" name="input" value="" /> <input type="button" value="Send" onclick="sendToActionScript(this.form.input.value);" /><br /> <textarea cols="60" rows="20" name="output" readonly="true">Initializing...</textarea> </form> </body> </html>
发表评论
-
AS3 条件编译
2013-06-07 09:38 1347转:http://www.lite3.cn/blog/?p= ... -
TextField没有buttonMode的方法..
2010-12-10 16:28 2345TextField没有buttonMode的方法..不过由于T ... -
ActionScript 处理html超级链接
2010-12-09 11:14 2163ActionScript 处理html超级链接 p ... -
通过代理传参数
2010-07-02 11:43 1490通过代理传参数 package com.xlands.uti ... -
ArrayUtils
2010-07-02 11:36 1555/* Copyright aswing.org, s ... -
将数组随机排序后返回
2010-06-30 16:40 1853将数组随机排序后返回 方法一 /** * ... -
AS类中跳转
2010-06-29 10:22 1837AS类中跳转 navigate ... -
转载:[as hack技术]垃圾回收机强制执行
2010-06-29 09:47 1465转载:[as hack技术]垃圾回收机强制执行 http:// ... -
Flash中所支持的Html标签
2010-06-24 17:21 1409Flash中所支持的Html标签 ... -
navigateToURL()
2010-06-22 15:27 2529navigateToURL() public fun ... -
ActionScript中Http请求
2010-06-19 09:42 3174ActionScript中Http请求 因我是用MVC模式来 ... -
ActionScript字符串工具
2010-06-04 09:44 3297ActionScript字符串工具 package c ... -
加载外部SWF文件
2010-05-22 15:43 1407加载外部SWF文件 package mytest.dt { ... -
AsWing+Java上传文件
2010-05-11 09:16 1783AsWing+Java上传文件 UI是用AsWing实现比较 ... -
A*最最基础的非常非常好的寻路教程!
2010-05-08 10:01 2079最最基础的非常非常好 ... -
JTable单元格偏移
2010-05-07 11:15 1386如果Frame中有个表格JTable,且允许双击单元格编辑,那 ... -
ActionScript中日期正则表达式
2010-04-27 18:24 1307这里是判断YYYY-MM-DD这种格式的,基本上把闰年和 ... -
AS中使用JSON
2010-04-26 09:15 3026要使用json作为数据交换格式。需引入corelib Acti ... -
invalidateDisplayList
2010-03-31 14:39 1950当多次改变控件的某些属性(如 高,宽,数据)后,调用该方法以便 ... -
自定义组件XPropertyTable
2010-03-13 12:56 1648这个是基于AsWing组件库实现的 主要是对JTable和P ...
相关推荐
标题“flex与js交互 关于ExternalInterface使用的小例子”指出了本文将探讨如何使用Flex的ExternalInterface类与JavaScript进行通信。ExternalInterface是Flex提供的一个API,允许ActionScript(Flex的主要编程语言...
Flex与JavaScript交互是一种常见的技术,它允许在Adobe Flex(基于ActionScript 3的富互联网应用程序框架)和网页中的JavaScript之间进行通信。这种交互性对于构建混合型应用,特别是在需要利用浏览器内核特性的Web...
1. **启用ExternalInterface**:在Flash中,首先需要确保ExternalInterface被启用,这意味着在ActionScript代码中需要导入flash.external.ExternalInterface库,并检查其是否可用。 2. **定义可调用的函数**:在...
JavaScript与ActionScript3之间的交互主要基于两种技术:Flash Player的ExternalInterface API和浏览器的跨文档消息传递(Cross-document messaging,CDM)。ExternalInterface API允许AS3代码暴露方法给JavaScript...
在Flex3中,实现Flex与JavaScript的交互主要依靠`ExternalInterface`类。`ExternalInterface`提供了在ActionScript和JavaScript之间建立通信桥梁的方法。首先,你需要确保浏览器支持`ExternalInterface`,如现代的...
`ExternalInterface`是ActionScript中一个极其重要的类,它作为一座桥梁,连接了Flash Player内部的世界与外部的Web环境,特别是与网页中的JavaScript交互的能力。这一功能在Flash作为网页多媒体内容制作标准的时代...
当需要在Flash内容与网页之间进行数据交换时,就需要实现ActionScript与JavaScript之间的通信。本程序例子旨在展示这种跨平台通信的实现方法。 ActionScript,基于ECMAScript,是Adobe Flash Player和Adobe AIR中的...
1. **ExternalInterface**:Flash Player提供了ExternalInterface类,允许Flash内容与JavaScript进行通信。JavaScript可以调用Flash对象内的公开方法,反之亦然。这是一种常见的Flash与JS交互方式。 2. **...
注意,由于浏览器安全策略的限制,这种方法可能在某些情况下无法工作,例如在沙箱模式下或者用户禁用了Flash Player的JavaScript交互。在实际项目中,应确保测试在各种浏览器和环境下的兼容性。
ActionScript 3提供了ExternalInterface API,使得Flash可以与JavaScript或其他宿主环境(如C#)进行双向通信。 2. **ExternalInterface API** ExternalInterface API是Flash Player提供的接口,允许ActionScript...
比如,你可以在Flash中创建一个事件监听器,当特定事件发生时,调用`ExternalInterface.call`来执行JavaScript函数。这种方法在不支持`fscommand`的旧版浏览器中可能不可用,但现代浏览器通常都支持。 最后,我们...
首先,我们要理解`ExternalInterface`是Flash Player提供的一种机制,允许AS3(ActionScript 3)代码调用JavaScript函数,从而与宿主环境(如浏览器)进行通信。在桌面应用中,如使用C#的Windows Forms或WPF,可以...
ExternalInterface的引入解决了早期版本Flash与JavaScript交互的限制,如Netscape Plugin API (NPAPI) 或ActiveX。 1. **ExternalInterface的添加和初始化**: 在AS3代码中,首先需要确保ExternalInterface可用,...
通过ActionScript的ExternalInterface类,我们可以调用JavaScript函数,并获取JavaScript返回的数据。例如,如果HTML页面中有这样一个JavaScript函数: ```javascript function getHTMLTagContent(tagName) { ...
- **Flash与JavaScript的集成**:学习使用`ExternalInterface` API或其他方法实现Flash内容与JavaScript之间的通信,允许在两种技术间传递数据和触发事件。 - **响应式设计**:如何根据用户设备和浏览器特性决定是否...
这种通信是通过Flash的ExternalInterface类实现的,它允许Flash内容与宿主环境(通常是浏览器)进行双向通信。当需要在Flash内容与网页其他元素之间交换数据或执行某些操作时,这种方法非常有用。 实现图片变换的一...
在JavaScript和Flash之间进行交互是Web开发中的一个常见需求,特别是在过去Flash广泛用于实现多媒体功能时。本篇文章将深入探讨如何通过JavaScript调用Flash(ActionScript)中的方法,以实现两者之间的通信。这个...
在Web开发领域,Flash Flex和JavaScript之间的通信是一个重要的技术话题,尤其在构建富互联网应用程序(RIA)时。Flex是一款基于ActionScript的开发框架,用于创建交互式的、动态的Web应用程序,而JavaScript是网页...
3. **JavaScript-ActionScript通信**: 使用`ExternalInterface`类,Flash可以与JavaScript进行双向通信。在JavaScript中设置变量,然后在ActionScript中通过`ExternalInterface.call`方法调用JavaScript函数来获取...
在ActionScript和JavaScript交互之前,首先需要解决跨域问题。由于安全限制,不同源的脚本之间不能直接通信。为此,我们需要创建一个跨域策略文件(crossdomain.xml),它定义了允许哪些域的ActionScript可以访问该...