即使确保将“allowScriptAccess”设置为始终不变,我也无法使其工作。我成功地将Flash影片放入浏览器并调用ReceiveDataFromFlashMovie()并打印“Got here”,但GetFlashMovieObject()仅根据Internet Explorer中的错误消息返回NULL。我错过了什么吗?使用ExternalInterface从JavaScript调用ActionScript 3.0/Flash中的函数
头的HTML文件:
<script type="text/javascript">
function getFlashMovieObject(movieName)
{
if (navigator.appName.indexOf("Microsoft") != -1) {
return window[movieName]
}
else { return document[movieName] }
}
function ReceiveDataFromFlashMovie()
{
document.write("Got here");
var callResult = getFlashMovieObject("MakingButtons").myFunction();
return callResult;
}
</script>
HTML:
<script type="text/javascript">
document.write("Hello World.")
ReceiveDataFromFlashMovie();
document.write(callResult)
</script>
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" width="500" height="500" id="MakingButtons" align="middle">
<param name="allowScriptAccess" value="always" />
<param name="movie" value="MakingButtons.swf" />
<param name="quality" value="high" />
<param name="bgcolor" value="#ffffff" />
<embed src="MakingButtons.swf" quality="high" bgcolor="#ffffff" width="550" height="400" name="MakingButtons" align="middle" allowScriptAccess="always" swlliveconnect="true" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />
</object>
的ActionScript 3.0:
import flash.text.TextField;
import flash.external.*;
// The name of the Flash variable to be called in JavaScript
var flashFunction:String = "myFunction";
var instance:Object = null;
// Callback function executed by the name of variable
var realFunction:Function = callMe;
ExternalInterface.addCallback(flashFunction, realFunction);
var foo = "Goodbye!";
function callMe():String
{
return foo;
}
谢谢!
这太棒了。谢谢! – 2012-01-31 02:39:08