AS3与JS之间的简单自定义参数通讯

  一直没去深入研究下AS3与JS的交互开发也就是SWF在html中的通信,最近出于项目要求被迫投入了,也在这里做个汇总.

  一:HTML中最快速的传值方式

  在HTML中插SWF时,可以跟个参数,比如:

  files/home.swf?id=”21″

  在AS3里可以这样去接收

  var id:String=stage.loaderInfo.parameters["id"]; 这种传值方式其实AS2的时候也是这样做的,到AS3时使用parameters 属性替换了AS1.0 和2.0 提供SWF文件参数作为主时间轴的技术,所以我们改用一下AS3的取值方式就行了.

  这种方式只能是单边一次性传值,有时候会用得到,但需要与JS相互通信就不行了,还有,只能接收字符串.

  二:使用外部通信接口ExternalInterface

  这也是AS2时代进化来的,目前公认的最靠谱的通信方式.

  使用方法:

  1.JS调用AS3的函数

  确定JS调用AS3之前,要在AS3中绑定调用函数,也就是说,只有AS3答应给的方法JS才能调用.

  使用:ExternalInterface.addCallback(functionName:String, closure:Function):void有两个参数:

  functionName:String — 容器可用于调用函数的名称。

  closure:Function — 要调用的 closure 函数。 这可能是一个独立的函数,或者可能是引用对象实例方法

ExternalInterface.addCallback("getASVars",getASFun);
private function getASFun(value:String):void {
//得到JS传来的值:value
}

  好了,可以在JS中去调用这个方法了,调用前还要先取得插进HTML的SWF的ID,我们在HTML中不管用什么方式插都可以设置ID

  例如先通过id为”mov”来获取对象,再调用上面绑定的方法:

代码如下:
function thisMovie(movieName) { if (navigator.appName.indexOf("Microsoft") != -1) { return window[movieName]; } else { return document[movieName]; } } thisMovie("mov").getASVars(value); 2.AS3调用JS的函数
 
 

  AS3调JS直接使用call就行了

  使用:ExternalInterface.call(functionName:String, … arguments):*

  这个方法有两个参数:

  functionName:String — 要在容器中调用的函数的名称。

  … arguments — 传递到容器中的函数的参数。 您可以指定零个或多个参数,参数之间用逗号分隔。 这些参数可以是任何 ActionScript 数据类型。 当调用 JavaScript 函数时,ActionScript 类型自动封装到 JavaScript 类型中;当调用其它某个 ActiveX 容器时,将在请求消息中对参数进行编码。

  例如:

代码如下:
ExternalInterface.call("setToJS","paramTest"); //在JS中编写这个setToJS的函数 function senToJS(value){ alert(value)//输出:paramTest }
 

看起来很爽,但也不是完全靠谱,这个接口还是会挑食的,只有在以下浏览器中才支持:

浏览器 操作系统 操作系统
Internet Explorer 5.0 及更高版本 Windows
Netscape 8.0 及更高版本 Windows Macintosh
Mozilla 1.7.5 及更高版本 Windows Macintosh
Firefox 1.0 及更高版本 Windows Macintosh
Safari 1.3 及更高版本 Macintosh

还有个安全沙箱的问题,如果出现安全沙箱警报,可以使用以下两种修正方法:
1.在包含 HTML 页中的 SWF 文件的 object 标签中,设置以下参数:

2.在 SWF 文件中,添加以下 ActionScript:

代码如下:
Flash.system.Security.allowDomain(sourceDomain)



以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索js 方法 调用
, 函数
, 参数
, 方法
, as3
, as3 0json
, 参数js方法
, winform和js之间传值
, ExternalInterface
, 方式
, flash与js通讯方法
, js自定义函数
, js函数定义方式
js函数参数
as3 自定义事件、as3 自定义数据类型、as3.0自定义事件、as3 不定参数、as3.0简单小游戏,以便于您获取更多的相关知识。

时间: 2025-01-26 18:07:43

AS3与JS之间的简单自定义参数通讯的相关文章

js中settimeout方法加参数的使用实例

 这篇文章主要介绍了js中settimeout方法加参数的使用,需要的朋友可以参考下 简单使用看w3school    里面没有参数调用,    例子如下   代码如下: <script type="text/javascript">  function timedMsg()  {  var a ="dd";  var t=setTimeout(function(){ cao(a);},3000)  }  function cao(a)  {  aler

jQuery简单自定义图片轮播插件及用法示例_jquery

本文实例讲述了jQuery简单自定义图片轮播插件及用法.分享给大家供大家参考,具体如下: 经常使用别人的插件,现在自己写一个,纪念一下. jQuery.banner.js: /* * banner 0.1 * 使用banner 实现图片定时切换 鼠标经过停止动画 * 鼠标离开,继续动画 */ ;(function($){ $.fn.banner =function(options){ //各种属性和参数 var defaults ={ picWidth:"1000", picHeigh

js中settimeout方法加参数_javascript技巧

js中settimeout方法加参数的使用.简单使用看w3school 里面没有参数调用, 例子: 复制代码 代码如下: <script type="text/javascript"> function timedMsg() { var a ="dd"; var t=setTimeout(function(){ cao(a);},3000) } function cao(a) { alert(a); } </script> </head

ajax-HTTP请求头自定义参数有什么作用?

问题描述 HTTP请求头自定义参数有什么作用? 比如我通过xhr.setRequestHeader('key', 'value')自定义了一个参数,那么这个参数有什么用处?可以在哪些地方使用呢?js能使用吗? 解决方案 部分头设置不了,比如来源响应头referrer,自定义的随便设置,服务器端可以用类似getRequestHeader方法获取到,比如ajax发送的请求会附带 X-Requested-With :XMLHttpRequest 这个响应头,比如这个方法只能ajax请求,你可以判断X-

js实现非常简单的焦点图切换特效实例

  这篇文章主要介绍了js实现非常简单的焦点图切换特效,是一个非常简单的js焦点图切换效果,涉及javascript操作鼠标事件与图片的相关技巧,需要的朋友可以参考下 这是一个非常非常简单的焦点图(更像滑动门),可供初学者借鉴参考 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47

求资源- 求一个简单自定义的框,右上角需要关闭框的叉。最简单的,不需要样式的。

问题描述 求一个简单自定义的框,右上角需要关闭框的叉.最简单的,不需要样式的. 我需要自己写一个框,里面可以写内容,最简单的就行.可以不需要样式. 解决方案 easyDialog v2.0 http://stylechen.com/easydialog-v2-0.html 解决方案二: artDialog:http://demo.jb51.net/js/2011/artDialog/_doc/labs.html 解决方案三: 不需要插件的有没,纯自己写的那种,最简单的就可以.

15位和18位身份证JS校验的简单实例_javascript技巧

一.身份证号码的结构和表示形式 1.号码的结构 根据[中华人民共和国国家标准GB11643-1999]中有关公民身份号码的规定,公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成.排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码. 2.地址码 表示编码对象常住户口所在县(市.旗.区)的行政区划代码,按GB/T2260的规定执行. 3.出生日期码 表示编码对象出生的年.月.日,按GB/T7408的规定执行,年.月.日代码之间不用分隔符. 4.顺序

android和js之间的bridge通信原理是什么

问题描述 android和js之间的bridge通信原理是什么 android webview和js之间的bridge通信原理是什么,最近只是简单的用到github上的一个库,请大神帮忙解答下. 解决方案 不是webview 吗 解决方案二: 没怎么研究过这个问题,

Vue.JS入门教程之自定义指令_javascript技巧

基础 Vue.js 允许你注册自定义指令,实质上是让你教 Vue 一些新技巧:怎样将数据的变化映射到 DOM 的行为.你可以使用Vue.directive(id, definition)的方法传入指令id和定义对象来注册一个全局自定义指令.定义对象需要提供一些钩子函数(全部可选): bind: 仅调用一次,当指令第一次绑定元素的时候. update: 第一次是紧跟在 bind 之后调用,获得的参数是绑定的初始值:以后每当绑定的值发生变化就会被调用,获得新值与旧值两个参数. unbind:仅调用一