Actionscript 3,JQuery SWF Object插件和ExternalInterface问题

时间:2010-10-01 09:35:14

标签: jquery actionscript-3 swfobject externalinterface

我正在尝试使用JQuery编写一个简单的flash mp3播放器,它是SWF Object插件。 我正在使用以下代码向页面添加swf:

$("body").append("<div id='player_external' style='position:absolute;top:0;left:0;height:1px;width:1px;'></div>");
$('#player_external').flash({swf:"player_external.swf",wmode:"transparent",height:1,width:1,AllowScriptAccess:"always"});

播放器应该是与javascript交互的不可见的单像素对象。 当我从flash对象中调用javascript函数时(使用ExternalInterface.call()),它可以正常工作。

但是当我尝试从JavaScript调用ActionScript函数时,没有任何反应。 我添加了一个这样的回调函数:

ExternalInterface.addCallback("MyFunc",MyFunc);

我已经尝试了一些我在互联网上找到的方法。像:

$('#player_external').context.MyFunc();
$('#player_external').flash("MyFunc()"); //this just crashes browser!

此外,此处找到的解决方案:How can I call an Actionscript function when the .swf is referenced by jQuery?没有帮助。 我放弃了对此的希望。也许最好在没有JQuery帮助的情况下使用flash。 但是应该有一些方法来做到这一点。

感谢。

3 个答案:

答案 0 :(得分:2)

尝试$('#player_external').get(0).MyFunc();

答案 1 :(得分:2)

只需附加一个id参数,即可直接访问Flash对象:

$('#my_container').flash({
    swf: 'swf/test.swf',
    width: 740,
    height: 110,
    wmode: 'transparent',
    allowScriptAccess:'always',
    id:'my_flash',
    flashvars: {}
});

// Use document.getElementById NOT $("#my_flash") 
document.getElementById("my_flash").myInternalFlashFuctionName('Foo');

答案 2 :(得分:0)

使用$('#myContent').get(0).method()对我有用。使用数组引用来获取第一个项也可以:$('#myContent')[0].method()

我正在使用'动态'swfobject注射。