一、getURL方法
flash中可以用getURL方法来调用JS中的函数。

例:

}


上面例子是点击按钮在新窗口中打开当前网页,用getURL直接将JS代码作为参数写在flash中。也可以使用 GET  POST 发送变量。下面的示例使用 GET将变量追加到 URL

flash研究(三)——Falsh与JavaScript交互var firstName:String = "Gus";
flash研究(三)——Falsh与JavaScript交互
var lastName:String = "Richardson";
flash研究(三)——Falsh与JavaScript交互
var age:Number = 92;

注:
1)        当使用 getURL() 调用 JavaScript 时,url 参数最多只能包含 508 个字符。
2)        只有将falsh发布到网页上面,此方法才有效,直接在swf文件中调会报异常。

二、ExternalInterface接口

1)        addCallback(methodName:String, instance:Object, method:Function) : Boolean
注册一个被js调的as方法。

methodName:从js中调用 as 函数时使用的名称。此名称不必与 as 方法的实际名称匹配。 
instance:在该方法中被解析成的对象。此对象不一定是在其上可找到该方法的对象,可以指定任何对象(或 null)。
method js中调用的 as方法。

2)        call(MethodName:String, [Parameters:Object]) : Object
flash中直接调用一个js函数。

这个方法有两个参数:
MethodName:你想要调用的javascript函数名要以字符串的形式。
Parameters:需要传递给javascript函数的参数,用逗号分开,是可选的。

三、实例

下面是在网上找的一个实例,加入了本人的整合、说明:

Flash代码:

flash研究(三)——Falsh与JavaScript交互import flash.external.*;
flash研究(三)——Falsh与JavaScript交互
// 注册的方法名字,JavaScript将使用这个名字调用
flash研究(三)——Falsh与JavaScript交互
var methodName:String = "send2AS";
flash研究(三)——Falsh与JavaScript交互
var instance:Object = null;
flash研究(三)——Falsh与JavaScript交互
// 实际调用的函数
flash研究(三)——Falsh与JavaScript交互
var method:Function = receiveMsg;
flash研究(三)——Falsh与JavaScript交互
// 返回值表示是否注册成功
flash研究(三)——Falsh与JavaScript交互
var wasSuccessful:Boolean = ExternalInterface.addCallback(methodName, instance, method);
init();

网页代码:

flash研究(三)——Falsh与JavaScript交互<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh-CN" lang="zh-CN">
flash研究(三)——Falsh与JavaScript交互
<head>
flash研究(三)——Falsh与JavaScript交互
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
flash研究(三)——Falsh与JavaScript交互
<title>as-js</title>
flash研究(三)——Falsh与JavaScript交互


运行效果:

flash研究(三)——Falsh与JavaScript交互

 

点击“GetURLJS”按钮,效果:

flash研究(三)——Falsh与JavaScript交互

 

代码比较简单,有注释,就不分析了。

注:

1)        例子中getElementByIdIE的方法,如果换成其它浏览器,不一定能运行出效果,所以最好用下面的方法:

flash研究(三)——Falsh与JavaScript交互    var flashVideoPlayer;
flash研究(三)——Falsh与JavaScript交互    
function initialize() 


2)        承载flashhtml文件在本地运行会报错

flash研究(三)——Falsh与JavaScript交互
点击是调试,调试代码如下:

 


    在网上查了一下,遇到这个问题的人相当多,也给出了一些解决的方法,我试了都没用,发布一下用http://地址浏览就没任何问题了。原因我也不是很清楚。有 高手知道,欢迎分享。

四、扩展

在做flashjs交互时遇到了这么一个问题:我要在调用承载flashhtml页面时,通过URL将参数传递给html页面,html在加载flash时通过调用flash中的方法将参数传进flash来初始化flash。但这样每次在调用flash方法的时候都报异常说,对象或方法不可用(IE7中做的测试),原因是flash还没有加载上,当然不能调用其中的方法了,延时处理一下就好了。

例:

flash研究(三)——Falsh与JavaScript交互<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh-CN" lang="zh-CN">
flash研究(三)——Falsh与JavaScript交互
<head>
flash研究(三)——Falsh与JavaScript交互
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
flash研究(三)——Falsh与JavaScript交互
<title>DianLi</title>
    FlashJavaScript交互的方法和常见的问题基本就这些了,另外还在网上找了一个第三方的FlashJavaScript交互的工具JavaScriptFlashGateway,试了试总觉得没flash自身的ExternalInterface简单好用。如果还有其它的方法,请不吝共享。

相关文章: