用javascript移动到swf框架的问题

时间:2010-08-26 12:22:46

标签: javascript actionscript-3

继我上一篇文章之后......并且非常感谢回复...... 这是我正试图解决的真实情况。 只需要从javascript调用swf来将swf移动到另一个时间范围。

AS3

Import flash.external.ExternalInterface;

function moveOn (frame:int ) : void
{
gotoAndPlay (frame);
}
ExternalInterface.addCallback("myjsFunction", moveOn);

JS

<script language="JavaScript">
function  sendtoSwf (frame){
MyMovie.myjsFunction(frame);
}
</script>
...
<object id="MyMovie"...>
...
<param name="allowScriptAccess" value="always" />
....
<embed name="MyMovie".../>
</object>

HTML JS触发器

<a href onclick=”javascript : sendtoSwf(25);”> click here </a>

如果有人可以澄清,因为我只想从js触发swf,我可能不需要... addCallback(...)行吗?它应该只是......呼叫(...)? 我还没有完全理解内部接口的想法。 在我的html点击触发器中我试图传递一个整数值,这是我希望swf移动到的实际帧,我不确定触发器是否应链接到“sendtoSwf”函数或“myjsFunction”...我不需要在js中引用移动框架的as3函数的实际名称?(即moveOn) 任何clarifacation将非常感激。谢谢你的期待。 编

2 个答案:

答案 0 :(得分:1)

对于任何有兴趣的人来说,这是有效的:

<script type="text/javascript">
//checking which browser used
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);
}
}
//code that sends frame no to flash
function sendtoSwf(numb){
var flashMovie=getFlashMovieObject("myFlashMovie");
flashMovie.sendToFlash(numb);
}
</script>

动作脚本

import flash.external.ExternalInterface;
ExternalInterface.addCallback("sendtoFlash", getFromJavaScript);
function getFromJavaScript(frame:int):void {
gotoAndPlay(frame);
}

答案 1 :(得分:0)

您肯定需要addCallback函数,但您还需要检查Javascript是否已准备好与Actionscript进行通信。看看文档,这个例子非常详细,应该为您提供所需的信息。

检查外部接口类 http://www.adobe.com/livedocs/flash/9.0/ActionScriptLangRefV3/