无法让JS在swf中触发As3函数

时间:2010-08-25 20:13:22

标签: javascript actionscript-3

迫切需要帮助,如果有人能看出他们是否能找到错误的话,那就会很贪婪 我试图通过使用js函数触发嵌入在网页中的swf电影。 这是一个使用我发现的示例代码的干运行,我最终只是希望电影播放并通过js指令停止,点击一个href。 网站为http://simplywebdzine.com/ASJS_test.html

swf中的as3代码是:

import flash.external.ExternalInterface;
ExternalInterface.addCallback("sendTextToFlash", getTextFromJavaScript);
function getTextFromJavaScript(str):void {
trace(str);
}

谢谢你

添加完整的HTML:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org        /TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<script type="text/javascript">
function setCurrentPage(newPage) {
    currentPage = newPage;
    SendDataToFlashMovie(newPage);
}
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 SendDataToFlashMovie(newPage){
var flashMovie=getFlashMovieObject("myFlashMovie");
flashMovie.sendTextToFlash(newPage);
}

 </script>
 </head>
<body>

<a href="#" onClick="setCurrentPage('Home')">Home</a>

    <object height="250" width="380" id="myFlashMovie"
codebase="http://download.macromedia.com/pub/shockwave/cabs/flash
/swflash.cab#version=8"      classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000">
<param value="myFlashMovie.swf" name="movie">
<param value="high" name="quality">
<param value="transparent" name="wmode">
<param value="#FFFFFF" name="bgcolor">
<param value="true" name="allowFullScreen">
<param value="true" name="swLiveConnect">
<param value="always" name="allowScriptAccess">

 <embed height="250" align="middle" width="380" src="myFlashMovie.swf" quality="high" 
 pluginspage="http://www.macromedia.com/go/getflashplayer" play="false"
 loop="false"      scale="showall" wmode="transparent" devicefont="false"
 bgcolor="#000000" menu="true" allowfullscreen="false" allowscriptaccess="always"
 salign="" type="application/x-shockwave-flash" name="myFlashMovie">

</object></body>
</html>

2 个答案:

答案 0 :(得分:0)

确保在flash嵌入中添加允许脚本访问参数(通常这就是问题)

<param name="allowScriptAccess" value="always" />

答案 1 :(得分:0)

您似乎在链接的html代码中输入了拼写错误。你有这个代码:

<a href onclick="javascript:SendDahMovie();">trigger</a> 

但你定义的JS函数是:

function SendDataToFlashMovie(newPage){
    var flashMovie=getFlashMovieObject("myFlashMovie");
    flashMovie.sendTextToFlash(newPage);
}

每次单击trigger链接时,不仅不会调用您的函数,还会重新加载页面。因此,请尝试修复此名称不匹配。

PS:顺便说一下,你的代码确实有效。

我从firebug运行了这个JS代码:

SendDataToFlashMovie('testing');

我可以在flashlog.txt中看到跟踪。