Flash 与 JavaScript 的交互主要通过 ExternalInterface
类来实现。以下是关于它们交互的基础概念、优势、类型、应用场景以及可能遇到的问题和解决方法。
import flash.external.ExternalInterface;
// 检查是否支持 ExternalInterface
if (ExternalInterface.available) {
// 调用 JavaScript 函数
ExternalInterface.call("myJavaScriptFunction", "Hello from Flash!");
}
对应的 JavaScript 函数:
function myJavaScriptFunction(message) {
console.log(message); // 输出: Hello from Flash!
}
在 Flash 中定义一个可调用的函数:
import flash.external.ExternalInterface;
ExternalInterface.addCallback("myActionScriptFunction", myActionScriptFunction);
function myActionScriptFunction(param) {
trace(param); // 输出传入的参数
}
在 JavaScript 中调用这个函数:
document.getElementById('myFlashObject').myActionScriptFunction("Hello from JavaScript!");
问题: 安全沙箱限制导致无法通信。
原因: 浏览器的安全策略可能阻止了跨域的 Flash 和 JavaScript 之间的通信。
解决方法:
示例跨域策略文件 (crossdomain.xml):
<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
<allow-access-from domain="*" />
</cross-domain-policy>
请注意,将 domain="*"
设置为允许所有域可能会带来安全风险,应根据实际情况进行适当配置。
通过上述方法和注意事项,可以有效地实现 Flash 与 JavaScript 之间的交互。