【Flash】Flash控制JS动作、JS控制Flash动作
【1】Flash控制JS动作
//Flash里的ActionScript: import flash.events.MouseEvent; import flash.external.ExternalInterface; function myCall(e:MouseEvent){ var intxt = inputa.text; var inwid = inputa.length; ExternalInterface.call("fCallJs",intxt,inwid); } btn.addEventListener(MouseEvent.CLICK,myCall); //网页里接受的JavaScript: <script type="text/javascript" > function fCallJs(aaa,bbb){ alert(aaa+","+bbb); }; </script> //注意几点:
1、如果用Jquery,不要把此
function
放在自执行的$(
($) {});里面,否则不运行。
2、如果在本地测试(没用IIS),需要把Flash安全设置里的高级设置,把此swf设为信任文件,才能看到效果。建议用IIS架个测试网站看。
======================================================= 【2】JS控制Flash动作 <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0" width="550" height="400" id="Test" align="middle"> <param name="allowScriptAccess" value="sameDomain" /> <param name="movie" value="Test.swf" /> <param name="quality" value="high" /> <param name="bgcolor" value="#ffffff" /> <embed src="Test.swf" quality="high" bgcolor="#ffffff" width="550" height="400" name="Test" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" /> </object> //网页JavaScript: <script type="text/javascript" > $(function($) { $("#go").click(function(){ var myFlash = getFlashMovieObject("Test"); myFlash.TPlay("star");//在此Flash里有个叫star的电影片段 }); }); function getFlashMovieObject(movieName) { //这个是为了让所有浏览器能获取到Flash的ID if (window.document[movieName]){ return window.document[movieName]; } if (navigator.appName.indexOf("Microsoft Internet")==-1) { if (document.embeds && document.embeds[movieName]) return document.embeds[movieName]; } else // if (navigator.appName.indexOf("Microsoft Internet")!=-1) { return document.getElementById(movieName); } } </script>
感谢http://blog.csdn.net/feb13/article/details/7691793 import flash.external.ExternalInterface; ExternalInterface.addCallback("jsf",asf); //允许js调用flash中的函数 参数1:要调用flash函数的js函数,参数2:被调用flash函数? function asf(vvv){ ? ? ? ? inputa.text = vvv; } ? JQUERY $(document).ready(function() {
var myFlash = getFlashMovieObject("Test");
$("#go2").click(function(){
? ? ? ? ? ? ?var aaa = $("#input01").val();
? ? ? ? ? ? ?myFlash.jsf(aaa);
? ? ? ? });
});
function getFlashMovieObject(movieName) {
if (window.document[movieName]){
return window.document[movieName];
}
if (navigator.appName.indexOf("Microsoft Internet")==-1) {
if (document.embeds && document.embeds[movieName])
return document.embeds[movieName];
}else{
return document.getElementById(movieName);
}
}
或者在JQUERY里这样 function getFlashMovieObject(movieName) { if (window.document[movieName]){ return window.document[movieName]; } if (navigator.appName.indexOf("Microsoft Internet")==-1) { if (document.embeds && document.embeds[movieName]) return document.embeds[movieName]; }else{ return document.getElementById(movieName); } } function jsf(aaa) { var myFlash = getFlashMovieObject("Test"); myFlash.jsf(aaa); };HTML <form name="form1" onsubmit="return false;"> <input type="text" id="input01" value="" /> <input type="button" value="Send" onclick="jsf(this.form.input01.value);" /><br /> </form>
$("#topBtn4").click(function(){ vr.askInfo();//查询当前FLASH的状态 if(flashStatus != "idle"){ vr.vrStop(); }else{ vr.vrPlay(); }; }); //获取返回的flashStatus值,由JS调用FLASH里的函数,再调用回这个函数 function getInfo(fs){ ?flashStatus = fs; };
//允许js调用flash中的函数 参数1:要调用flash函数的js函数名,参数2:被调用flash函数名 ExternalInterface.addCallback("askInfo",askInfo); function askInfo(){//这个函数是让JS调用来获取FLASH状态信息的,再传递回JS ??? var fs:String = flashStatus; ??? ExternalInterface.call("getInfo",fs); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |