让我们详细讲解“javascript向flash swf文件传递参数值注意细节”的攻略。
1. 基本概念
在传递参数之前,我们需要了解一些关于Flash与JavaScript之间交互的基本概念。
Flash对于JavaScript的支持
Flash支持通过JavaScript调用Flash中的方法(ExternalInterface.call),以及在Flash中调用JavaScript中的方法(ExternalInterface.addCallback)。
ExternalInterface使用的限制
Flash与JavaScript交互的时候,存在一些限制:
- 此方法仅适用于通过浏览器嵌入的Flash对象,对于使用浏览器插件方式嵌入的Flash对象,则无法使用ExternalInterface。
- 此方法需要Flash对象安装在浏览器中,否则可能会出现js报错。
2. 实现步骤
实现Flash与JavaScript之间交互,需要经过以下步骤:
步骤1:在Flash中开启ExternalInterface支持
import flash.external.*;
if(ExternalInterface.available) {
ExternalInterface.call("completeInit");
}
步骤2:在JavaScript中调用Flash方法
function callFlashMethod(method, param) {
var movie = document.getElementById("flash-object-id");
return movie[method](param);
}
其中,"flash-object-id" 为嵌入页面中flash对象的id属性值。
步骤3:在Flash中调用JavaScript方法
if(ExternalInterface.available) {
ExternalInterface.call("jsFunctionName", "param1", "param2");
}
其中,"jsFunctionName" 为要调用的JavaScript方法名,"param1"、"param2" 为该方法的参数。
3. 传递参数的注意细节
在使用ExternalInterface传递参数时,需要注意以下细节:
细节1:传递的参数需要是基本类型
在传递参数时,只能传递JavaScript基本类型(如字符串、数字、布尔型),不能传递复杂类型(如数组、对象等)。
细节2:使用encodeURIComponent()方法编码传递的参数
在使用ExternalInterface传递参数时,应将参数使用encodeURIComponent()方法进行编码,防止参数中出现特殊字符导致调用失败。
示例1:在Flash中调用JavaScript函数,并传递一个参数
Flash代码:
import flash.external.*;
if(ExternalInterface.available) {
ExternalInterface.call("sayHello", "world");
}
JavaScript代码:
function sayHello(msg) {
alert("Hello, " + msg);
}
示例2:在JavaScript中调用Flash函数,并传递一个参数
JavaScript代码:
function callFlash() {
var movie = document.getElementById("flash-object-id");
movie.flashFunction("Hello,World!");
}
Flash代码:
import flash.external.*;
if(ExternalInterface.available) {
ExternalInterface.addCallback("flashFunction", onFlashFunction);
}
function onFlashFunction(msg:String) {
trace("Flash received message: " + msg)
}
以上就是关于“JavaScript向Flash SWF文件传递参数值注意细节”的详细攻略。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:javascript向flash swf文件传递参数值注意细节 - Python技术站