我正在使用actionscript进行以下调用
var data:Object = ExternalInterface.call("getData");
trace("data is", data); // data is null in IE7-9, but works in FF
到javascript中的以下功能
function getData() {
var data = {example : "data"};
console.log("data", data); //displays as expected in the console
return data;
}
使用swfObject2进行嵌入,使用以下代码(从现有代码中复制并稍微清理一下,但下面会有一些未定义的变量):
var This = this,
divId = "myDiv",
widgetData = serviceData.flashvars,
swfURL = "http://mysite.com/my.swf",
flashvars = widgetData, //external object, not used in this case
params = {
movie: serviceData.swfURL,
pluginspage: "http://www.adobe.com/go/getflashplayer",
align: "middle",
allowScriptAccess: "always",
quality: "high",
allowFullScreen: "true",
wmode: "transparent",
bgcolor: "#FFFFFF",
menu: "false"
},
expressInstallURL = "http://mysite.com/expressInstall2.swf?2",
attributes = {id : divId + "_mySWF", name: divId + "_mySWF"},
callback = function (e) {
console.log("player loaded");
};
flashVideoPlayer = swfobject.embedSWF(swfURL, divId, widgetData.width, widgetData.height, "10", expressInstallURL, flashvars, params, attributes, callback);
并且所有常见内容都包含在html中,如ids,allowscriptaccess,而且我不在表单标记内。我知道没有初始化问题,因为javascript正在getData中显示数据,因此该函数在调用之前必须存在,等等。问题似乎是javascript将对象返回到flash。
this post似乎也没有帮助,但我的情况有点不同,因为我正在使用swfObject。 我做错了还是这个错误?
答案 0 :(得分:0)
我不确定你提供的那一行AS3代码是否就是你所拥有的,但如果是这样,你可以尝试以下方法:
private function sendToJS(e:MouseEvent):void {
if(ExternalInterface.available) {
ExternalInterface.call("fromAS", doSomethingHere);
}
}
我曾经使用过一次。