JavaScript与Flash交互实例解析

4星 · 超过85%的资源 需积分: 1 19 下载量 30 浏览量 更新于2024-09-11 1 收藏 3KB TXT 举报
"JS与FLASH相互调用示例,通过本文学习如何在JavaScript与Flash之间进行交互,适用于web前端开发" 在Web开发中,有时我们需要在JavaScript(JS)和Adobe Flash(AS)之间实现数据交换或功能调用。这种交互性可以用于创建更丰富的用户体验,例如在Flash中播放视频时控制播放进度,或者在JavaScript中获取Flash组件的状态。本文将介绍两种基本的调用方式:JavaScript调用AS和AS调用JavaScript。 1. JavaScript调用AS(ActionScript) 当需要从JavaScript调用Flash中的函数时,可以使用Flash的`ExternalInterface`类。首先,在AS代码中,你需要导入`ExternalInterface`并注册一个回调函数,以便JavaScript能够调用它。以下是一个示例: ```actionscript import flash.external.ExternalInterface; // 定义AS中的一个函数helloAs function helloAs():String { return "Hello from AS"; } // 注册这个函数,使其能在JavaScript中被调用 ExternalInterface.addCallback("helloAs", this, helloAs); ``` 在HTML中,你需要确保Flash对象允许脚本访问,并设置`allowScriptAccess`参数为`sameDomain`。然后,你可以在JavaScript中调用这个AS函数,如下所示: ```javascript var result = ExternalInterface.call("helloAs"); alert(result); // 显示 "Hello from AS" ``` 2. AS调用JavaScript 反过来,如果需要在AS中调用JavaScript函数,同样使用`ExternalInterface`的`call`方法。在AS中,你可以这样调用JavaScript函数: ```actionscript ExternalInterface.call("javascriptFunction", "参数1", "参数2"); // 调用名为javascriptFunction的JS函数,并传递参数 ``` 在HTML中,你需要定义这个JavaScript函数,例如: ```javascript function javascriptFunction(param1, param2) { alert("Called from Flash with parameters: " + param1 + ", " + param2); } // 获取Flash对象,以便调用其中的方法 function callFromFlash() { var flashObject = thisMovie("test"); if (flashObject != null) { flashObject.helloAs(); // 调用Flash中的helloAs函数 } } ``` 注意,`thisMovie`函数用于获取Flash对象,这取决于浏览器环境。在IE中,它返回`window[test]`,而在非IE浏览器中,返回`document[test]`。 总结,JavaScript与Flash之间的交互依赖于`ExternalInterface`类,该类允许在两种语言之间建立通信桥梁。在Flash AS3中,从JavaScript到AS的调用是通过`addCallback`注册的函数完成的,而从AS到JavaScript的调用则使用`call`方法。为了确保调用成功,必须确保Flash对象在HTML中正确配置了`allowScriptAccess`参数。这样的交互能力极大地扩展了Web应用程序的功能和动态性。