jQuery swfobject AS3 外部接口不工作

发布于 2024-12-26 15:48:21 字数 760 浏览 0 评论 0原文

正如标题所示,我在使用 AS3ExternalInterface 和 jQuery / swfobject 时遇到了一些问题。

ActionScript :

if (ExternalInterface.available) {
    ExternalInterface.call('init');
    ExternalInterface.addCallback('testFunc', returnFunc)
}

function returnFunc():void {
    ExternalInterface.call('alertFunc');
}

jQuery:

function init() {
    alert('init');
    $('#swf_object').testFunc();
}

function alertFunc() {
    alert('finished');
}

显然这意味着该对象具有 id 'swf_object'

我也尝试通过以下方式获取该对象:

document.getElementById('swf_object')
document.getElementById('swf_object')[0]
$('#swf_object')[0]

无济于事。

它发出第一个警报(“init”),但不执行最后一个警报。我完全困惑,希望有人能指出我的错误! (某处肯定有一个非常明显的地方)

As you can tell by the title, I am having some trouble with AS3 ExternalInterface and jQuery / swfobject.

ActionScript :

if (ExternalInterface.available) {
    ExternalInterface.call('init');
    ExternalInterface.addCallback('testFunc', returnFunc)
}

function returnFunc():void {
    ExternalInterface.call('alertFunc');
}

jQuery:

function init() {
    alert('init');
    $('#swf_object').testFunc();
}

function alertFunc() {
    alert('finished');
}

Obviously that implies the object has the id 'swf_object'

I have also tried getting the object by the following:

document.getElementById('swf_object')
document.getElementById('swf_object')[0]
$('#swf_object')[0]

To no avail.

It's giving the first alert ('init') but then not doing the last one. I'm completely baffled and hope someone can point out my mistakes! (there's bound to be a massively obvious one somewhere)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

帅冕 2025-01-02 15:48:21

问题在于,您调用 JavaScript init(),而 JavaScript init() 会在您使 testFunc 可用之前调用 Flash testFunc() (仅在调用 init() 完成后发生)。

要解决此问题,只需将两行代码交换为:

ExternalInterface.addCallback('testFunc', returnFunc);    // Needs to be available before it's used
ExternalInterface.call('init');

至于在 JavaScript 中获取 Flash 对象,您可以直接使用 document.getElementById('swf_object') 来完成,但也可以使用 jQuery:

var swf = $('#swf_object').get(0);    // Get the actual object without the jQuery wrapper

The problem is that you're calling out to the JavaScript init() which calls the Flash testFunc() before you're made testFunc available (which happens only after the call out to init() completes).

To fix this, simply swap the two lines to this:

ExternalInterface.addCallback('testFunc', returnFunc);    // Needs to be available before it's used
ExternalInterface.call('init');

As for getting the Flash object in JavaScript, you can do it directly with document.getElementById('swf_object'), but it's possible using jQuery too:

var swf = $('#swf_object').get(0);    // Get the actual object without the jQuery wrapper
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文