注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

学会珍惜

You've been saying for the longest time

 
 
 

日志

 
 

Flash 与 JavaScript的交互  

2012-08-24 17:49:13|  分类: 前端开发 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

写在前面:

Adobe官网:http://livedocs.adobe.com/flash/9.0_cn/ActionScriptLangRefV3/flash/external/ExternalInterface.html

——听歌

2012年12月4日


整理自:互联网 & 百度空间


所谓通讯就是信息的交换,这里我们谈的是jsFlash之间的数据交换的几种方式:

1.  Flashvars

Flashvars - Flash初始化信息的传递者,它由N 名值对 组成;当你的flash文件需要某些初始信息的时候就需要用到它。

1)   如果你使用标签嵌入Flash的方法,应像这样:<param name="flashvars" value="text=这是flashvars传入的数据" /> param 标签传递信息;

2)   如果你使用的是 swfobject 就是用上面提到的,定义一个flashvars的变量然后在调用swfobject.embedSWF方法时传入这个变量;

3)   或者上面的这两种方法都可以在你要嵌入的Flash文件地址后面加上问号传递 入:"xxx.swf?name1=hello&name2=world "

2.  JS调用Flash的方法,用参数传递信息给Flash或者得到Flash方法的返回信息

flash传递变量给js

以下为JS

//输出测试,通过v传递flash变量
function jsAlert(v) {
alert(v);
}
//
调用flash中的方法,"my_mv"html页中swfid
function callExternal() {
thisMovie("my_mv").flAlert();
}
//
搭建jsflash互通的环境
function thisMovie(movieName) {
if (navigator.appName.indexOf("Microsoft") != -1) {
return window[movieName]
}else{
return document[movieName]
}
}

以下为AS

//导入ExternalInterface
import flash.external.ExternalInterface;
//
下面这个赋值一定要注意,如果是字符串,写法应该是在双引内再加单引,此前我郁闷了一天
var i:String = "’js
调用flash中的方法,传递flash变量给js’";
//var i:Number = 1234;
function showAlert(){
//
调用js方法jsAlert(),并将flash变量赋值给js
ExternalInterface.call("jsAlert("+i+")");
}
//
允许js中的flAlert()调用flash中的showAlert()
ExternalInterface.addCallback("flAlert",null,showAlert);

=====================================================

js传递变量给flash

html 页中的 JavaScript 函数:
function GetSwfUrl()
{
var pics1 = parseInt(Math.random()*5)+1;
var pics2 = parseInt(Math.random()*5)+1;
document.my_swfId.SetVariable("pic01Num", pics1);
document.my_swfId.SetVariable("pic02Num", pics2);
}

说 明:pic01Num pic02Num Flash 中定义的变量,以上函数将 JS 变量 pics1 pics1 分别赋值予 Flash 变量 pic01Num pic02Num my_swfId html 页中 swf id .

getURL调用JS
getURL("javascript:GetSwfUrl()");

ExternalInterface调用JS
import flash.external.ExternalInterface;//
导入 ExternalInterface
ExternalInterface.call("GetSwfUrl()");

注意:如果要使用 ExternalInterface,当前帧必需要有 import flash

 

3.  Flash调用js方法得到js方法的返回信息 或 通过参数传递信息给JS

ExternalInterface.call(js的函数名称, ”参数1”, ”参数2”, …);

如:

var value:String = ExternalInterface.call(“jsFunName“, ”argument1”, ”argument2”);

注意非同域下设置 param 标签的 allowScriptAccess 属性的 value值为 always,如:

var params = {

allowScriptAccess: "always"

};

或:

<param name="allowScriptAccess" value="always" />

***************

Flash 中与 JS 的通信可以用传统的 getURLFlash8 以后,可以用 ExternalInterface ExternalInterface 在功能上与 fscommand()CallFrame() CallLabel() 方法相似,但它更灵活、更通用。推荐对 JavaScript ActionScript 之间的通讯使用 ExternalInterface

  评论这张
 
阅读(165)| 评论(0)
推荐

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017