实现Flash调用JS方法并接收JS传递的变量有以下两种常见做法:
一、使用 ExternalInterface
作为一个Flash插件的开发者,可以使用 ExternalInterface 达到让 Flash 调用 JavaScript,让 JavaScript 调用 Flash 之间互相交互的目的。
以下是一个示例说明:
- Flash定义和带入数据
Flash原本就可以通过以下函数,向JavaScript传递消息:
ExternalInterface.call("函数名", "参数");
我们可以使用这个函数来向JS传递变量。例如,下面的代码演示如何定义一个字符串,然后将其传递给JS函数showMessage
:
//在Flash中
import flash.external.ExternalInterface;
var myMessage:String = "Hello World!";
ExternalInterface.call("showMessage", myMessage);
//在HTML中
<script>
function showMessage(message){
alert("收到Flash的消息: " + message);
}
</script>
- JavaScript调用Flash函数并传参
JS调用Flash函数同样可以用 ExternalInterface 函数来实现。在Flash中,需要进行如下的操作:
if (ExternalInterface.available) {
ExternalInterface.addCallback("JavaScript中注册的函数名", this, flashFunc);
}
这个函数的执行过程是:执行完这个操作后,现在 JavaScript 在调用 JavaScript中注册的函数名()
的时候就可以调用我们注册的函数了(在下面的示例代码中,这个注册的函数就是 test()
了)
//在Flash中
import flash.external.ExternalInterface;
if (ExternalInterface.available) {
ExternalInterface.addCallback("test", this, flashFunc);
}
function flashFunc(arg:String):void
{
//处理接收到的参数
trace("JS传给了Flash的参数:"+arg);
}
//在HTML中
//调用Flash函数,给Flash传参
<script>
function callFlashTest(){
var myFlash = document.getElementById("myFlashObj");
myFlash.test("Hello Flash!");
}
</script>
二、使用 SWFObject
此方法使用SWFObject加载Flash,可以直接在JavaScript中调用Flash中的函数,并且可以传递变量。
示例代码如下:
- Flash定义并带入参数
在Flash中必须通过AS定义Function,即让我们在Flash中定一个函数可以被JS调用:
//在Flash中
import flash.external.ExternalInterface;
function FlashFunc(arg:String):void
{
trace("JS传给了Flash的参数:"+arg);
}
//让JS可以通过JS传递一个参数调用Flash中的函数FlashFunc
if (ExternalInterface.available) {
ExternalInterface.addCallback("FlashFunc", null, FlashFunc);
}
//Flash中同时调用JS的方法,向JS传递参数
if (ExternalInterface.available) {
ExternalInterface.call("JavaScriptFunc", "Flash中的参数");
}
- 在HTML中调用函数并传入参数
<script src="https://ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject.js"></script>
<script>
function JavaScriptFunc(arg) {
alert("Flash传过来的参数:" + arg);
}
var flashvars = {
param1:"value1",
param2:"value2"
};
var params = {
menu: "false"
};
var attributes = {
id:"flashContent"
};
swfobject.embedSWF("myFlash.swf", "flashContent", "300", "120", "10.0.0", "expressInstall.swf", flashvars, params, attributes);
</script>
在上述代码中,我们可以看到,通过 swfobject.embedSWF()
代码,我们在 HTML 中进行了 Flash 的加载,并对其进行了配置。最后一步就是让 Flash 调用我们在 JavaScript 中定义的 JavaScriptFunc 函数,同时将参数"Flash中的参数"通过ExternalInterface传递给 JavaScriptFunc 函数。
使用 ExternalInterface 或 SWFObject,开发者就可以非常方便地在 Flash 和 JavaScript之间进行传递变量或调用函数了。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:flash调用js中的方法,让js传递变量给flash的办法及思路 - Python技术站