JS与AS双向调用实现
JS 和 AS 的双向调用,在老项目里还挺常见的,尤其是 Flash 还在服役的那些年。你要是手上还有老系统要维护,或者在做和 Flash 打交道的项目,那这个资源真能帮上忙。它不光讲了怎么用 ExternalInterface 做通信,还细讲了怎么从 JS 传参给 AS、怎么让 AS 回调 JS,代码示例也比较清晰。
JS 调 AS,主要靠ExternalInterface.addCallback。你在 AS 里注册一个方法,JS 那边就能像本地函数一样直接调用。响应也快,代码也简单:
import flash.external.ExternalInterface;
ExternalInterface.addCallback("callFromJS", function(param: String): String {
return "Called from AS with " + param;
});
JS 里就直接上:
var flashObj = document.getElementById('yourFlashObject');
console.log(flashObj.callFromJS('Hello'));
反过来,AS 调 JS 就用ExternalInterface.call。这个函数必须在 JS 全局作用域下才能被 AS 成功调用,不然 AS 找不到它:
function functionInJS(message) {
console.log('Called from AS: ' + message);
return 'Response from JS';
}
var result:String = ExternalInterface.call("functionInJS", "Hello AS");
trace(result);
除了调用方式,FlashVars这种初始化参数的传递方式也蛮实用,适合传静态配置。JS 可以设置,AS 可以直接取。
但说实话,现在用 AS 的场景不多了。Flash 也不被浏览器支持了。不过如果你在维护旧项目,这种技术储备还是挺有价值的。要注意安全策略、浏览器兼容性,还有异步调用的坑,是在数据来回频繁的场景里。
如果你正在搞 Flash 内容迁移,或者要调试老 Flash 页面,这篇文章也可以搭配调试插件和核心库解析一起看,会更顺手。
84.69KB
文件大小:
评论区