flash与 javascript通讯
A、js获取flash传过来的值
flash代码:
On(Release)
FSCommand("alert","Hello,This is FS Command speaking")
End On
js:
在<head>里加入以下代码
<script language=javascript>
function button_DoFSCommand(command,args)
{if(command == "alert"){ --这里的判断对应的是 FSCommand("alert","")前面的这个alert参,这样一来我们想写什么参做什么样的判断就好.
alert("Now look at this:"+args);}
}
</script>
<SCRIPT LANGUAGE=VBScript> //注意这里比较关键,是与flash相关联的.button_FSCommand下划线前的button就是falsh对象的id
Sub button_FSCommand(ByVal command, ByVal args)
call button_DoFSCommand(command, args)
end sub
</SCRIPT>
B、flash取js值
function sendData(args){
var someValue = args.value;
window.document.myFlash.SetVariable("myText", someValue); --myflash 为flash对象,myText是flash里的变量的值,如下图
}
C、flash担交表单
flash代码:
参考一下,flash部分的提交按钮动作为:
on(release){
loadVariables("http://***.**.***.***/guest.asp?userid=" add eval(_root.username) add "&pwd=" add eval(_root.password),this,"GET");
now = new Date();
begintime = now.getSeconds();
while(true){
endt=new Date();
endtime=endt.getSeconds();
if(endt-now>2)
{
_root.gotoAndPlay(eval(login));
}
}
}
on(press){
var lv=new LoadVars();
lv.username="...";
lv.password="...";
lv.send("bbs/index.asp","_self","post");
}
--我实现的例子
on(release)
{
var vl=new LoadVars();
vl.name=this.yname.text;
vl.email=this.email.text;
vl.remark=this.remark.text;
vl.send("show.aspx","_self","post");
}
LoadVars对象就好像是一个form或者说是一个面板,用来放一些控件的。
而这个控件可以通过一些手段实现和其它网页的通讯。
这里假如要调用外部的exe,需要把exe的文件放入fscommand文件夹中,调用的flash必需导成exe格式的才行,并且和fscommand文件夹在同目录,这样就形成了flash导成的exe才能调用应用程序exe.
fscommand("exec","xxx.exe") 例子:
以上是第一个方法。
假如放在同个目录中,就需要用到getURL
getURL("xxx.exe") //这里exe放在和flash同目录中。。
调用硬盘中某位置的exe文件: 例子:
假如把exe放文件夹中,文件夹要和flash放同目录中,getURL("文件夹/xxx.exe") 假如访问硬盘中的:
getURL(file:///盘符:/xxx.exe)
在 Flash 中与 JS 的通信可以用传统的 getURL,Flash8 以后,可以用 ExternalInterface 。ExternalInterface 在功能上与 fscommand()、CallFrame() 和 CallLabel() 方法相似,但它更灵活、更通用。推荐对 JavaScript 和 ActionScript 之间的通讯使用 ExternalInterface 。
getURL调用JS:
getURL("javascript:GetSwfUrl()");
ExternalInterface调用JS:
import flash.external.ExternalInterface;//导入 ExternalInterface 类
ExternalInterface.call("GetSwfUrl()");
注意:如果要使用 ExternalInterface,当前帧必需要有 import flash.external.ExternalInterface; 或者 import flash.external.*;