继我上一篇文章之后......并且非常感谢回复...... 这是我正试图解决的真实情况。 只需要从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将非常感激。谢谢你的期待。 编
答案 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/