更新:已回答!
旧帖子:
我刚想出如何让as3调用jQuery函数:as3 calling jQuery function
但现在我想知道jQuery如何调用as3函数。有什么想法吗?
更新:尚未修复 - 我的遗失是什么?
以下是我的jQuery中的代码
function BeGone()
{
var flash = $("#BeauFullScreen");
flash.myFunction();
$("#Content").show();
}
这是我在as3中的代码
import flash.external.*;
function callMe()
{
var bParts = Beau.content as MovieClip;
bParts.Beau.BeauBody.LeftWing.gotoAndStop(1);
bParts.Beau.BeauBody.RightWing.gotoAndStop(1);
bParts.alpha = .5;
}
ExternalInterface.call("myFunction", callMe);
我的嵌入式Flash对象代码:
<div id="flashContentABOVE">
<object classid="33" width="100%" height="100%" id="BeauFullScreen" align="middle">
<param name="movie" value="BeauFullScreen.swf" />
<param name="quality" value="best" />
<param name="bgcolor" value="#ffffff" />
<param name="play" value="true" />
<param name="loop" value="true" />
<param name="wmode" value="transparent" />
<param name="scale" value="noscale" />
<param name="menu" value="true" />
<param name="devicefont" value="false" />
<param name="salign" value="" />
<param name="allowScriptAccess" value="sameDomain" />
<!--[if !IE]>-->
<object type="application/x-shockwave-flash" data="BeauFullScreen.swf" width="100%" height="100%" id="BeauFullScreen">
<param name="movie" value="Jesus.swf" />
<param name="quality" value="best" />
<param name="bgcolor" value="#ffffff" />
<param name="play" value="true" />
<param name="loop" value="true" />
<param name="wmode" value="transparent" />
<param name="scale" value="noscale" />
<param name="menu" value="true" />
<param name="devicefont" value="false" />
<param name="salign" value="" />
<param name="allowScriptAccess" value="sameDomain" />
<!--<![endif]-->
<a href="http://www.adobe.com/go/getflash">
<img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" />
</a>
<!--[if !IE]>-->
</object>
<!--<![endif]-->
</object>
</div>
答案 0 :(得分:1)
这是一个很好的小插件,有一些关于如何使用它的描述
http://www.davecomeau.net/blog/56/jQuery+Plugin%3A+externalInterface
我希望它有所帮助!
这是一个更详细的答案:
*在您的html页面*
1创建包含id为“flashMovie”的flash的div
2创建一个用于测试目的的按钮 单击“调用外部接口(带有成功回调)”
3不要忘记将所需的引用添加到jquery,query.externalinterface.js,swfobject(应该用你的sw对象替换)
<script type="text/javascript" src="/javascript/jquery/jquery-1.3.2.js"></script>
<script type="text/javascript" src="/javascript/jquery/jquery.externalinterface.js"></script>
<script type="text/javascript" src="/javascript/swfobject/swfobject.js"></script>
4添加一个单击按钮后将调用flash对象的JavaScript函数
<script type="text/javascript">
swfobject.embedSWF('/flash/externalInterfaceExample.swf', 'flashMovie', '238', '155', '10.0.0');
function interfaceTest()
{
$('#flashMovie').externalInterface({
method:'flashMethodToCall', // this method has to be already defined in your flash object
args:'some arguments',
success: function(response)
{
alert('flash says: ' + response);
},
error: function(error)
{
alert('error: ' + error);
}
});
}
</script>
动作脚本中的* **
import flash.external.*;
function someMethod()
{
// Here goes your code
}
ExternalInterface.addCallback("flashMethodToCall", someMethod);
答案 1 :(得分:1)
一个简单的(非jQuery)解决方案是使用externalInterface.addCallback
在Flash中进行设置。然后你可以在你的jQuery / Javascript中的任何地方调用它。请记住,您需要specify the name and ID of the flash object才能让Javascript识别它。
答案 2 :(得分:1)
首先,在JS / jQuery代码中,您需要一个小更新:
function BeGone()
{
var flash = $("#BeauFullScreen").eq(0); //change here
flash.myFunction();
$("#Content").show();
}
然后在Asctionscript中:
import flash.external.*;
function callMe()
{
var bParts = Beau.content as MovieClip;
bParts.Beau.BeauBody.LeftWing.gotoAndStop(1);
bParts.Beau.BeauBody.RightWing.gotoAndStop(1);
bParts.alpha = .5;
}
ExternalInterface.addCallback("myFunction", callMe); //change here
答案 3 :(得分:1)
为我工作的答案!
我必须添加3个重要元素!
1)下面是jQuery与as3通信并在as3中调用函数所需的代码行。
function BeGone()
{
$("#BeauFullScreen").get(0).myFunction(); /// THIS LINE WAS THE KEY!
}
2)我还需要添加swfObject javascript:
<script> src="swfObject.js"></script>
3)**最后,我不得不使用JavaScript嵌入我的SWF,而不是Dreamweaver在我的问题中插入代码的方式。嵌入式JavaScript代码如下。
<script>
var flashvars = {
};
var params = {
menu: "false",
scale: "noScale",
wmode: "transparent", // added this to no avail
allowFullscreen: "true",
allowScriptAccess: "always",
bgcolor: "",
};
var attributes = {
id:"BeauFullScreen"
};
swfobject.embedSWF(
"BeauFullScreen.swf",
"flashContent", "100%", "100%", "10.0.0",
"expressInstall.swf",
flashvars, params, attributes);
</script>
我希望这有助于某人。感谢大家所做的一切努力!