当Flash置于HTML容器中时,经常会遇到Flash与JS的通信问题,例如:JS能否调用Flash中的变量、方法,Flash能否调用JS中的变量、方法等等。答案是肯定的。随着技术的不断发展,解决方案也是多种多样的。
比如存在js端方法:
function JsFun(){
alert(123);
}
一、Flash调用js端方法:
1)方法一、getURL调用JS:
getURL("javascript:JsFun()");
//带参数的JS方法:getURL("javascript:JsFun('a',1,true)");
2)方法二、ExternalInterface调用JS:
import flash.external.ExternalInterface;//导入 ExternalInterface 类
ExternalInterface.call("JsFun");
//带参数的JS方法:ExternalInterface.call("JsFun",'a',1,true);
注意:如果要使用 ExternalInterface,当前帧必需要有 import flash.external.ExternalInterface; 或者 import flash.external.*;
二、js调用Flash方法:
1)方法一、
Flash端代码:
import flash.external.*; //导入包
ExternalInterface.addCallback("FlashFun",this,FlashFun); //将函数注册到容器列表
function FlashFun(str:String){ //Flash内部函数
lbl_Name.text = str; //lbl_Name是Flash端的文本标签
}
js端代码:
function GetFlashObj(flashName){ //根据flash的name获取flash对象,也可以根据flash的id来获取document.getElementById(flashId);
if(navigator.appName.indexOf('Microsoft')!=-1){
return window[flashName];
}else{
return document[flashName];
}
}
GetFlashObj('demo').FlashFun('Hello World!');
2)方法二、
js端给Flash端的变量赋值,在Flash端侦听变量的变化:
js端代码:
GetFlashObj('demo').SetVariable('status',1); //SetVariable(变量名,变量值);
Flash端代码:
var status=0;//变量名
setInterval(function(){
if(status==1)
FlashFun();
},1000);
function FlashFun(){
//
}
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 现代计算机视觉入门之:什么是图片特征编码
· .NET 9 new features-C#13新的锁类型和语义
· 手把手教你在本地部署DeepSeek R1,搭建web-ui ,建议收藏!
· Spring AI + Ollama 实现 deepseek-r1 的API服务和调用
· 数据库服务器 SQL Server 版本升级公告
· C#/.NET/.NET Core技术前沿周刊 | 第 23 期(2025年1.20-1.26)
· 程序员常用高效实用工具推荐,办公效率提升利器!