jQuery swfobject AS3 ExternalInterface не работает - PullRequest
1 голос
/ 15 января 2012

Как вы можете сказать по названию, у меня возникли некоторые проблемы с AS3 ExternalInterface и 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');
}

Очевидно, это означает, что объект имеет идентификатор 'swf_object'

Я также пытался получить объект следующим образом:

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

Безрезультатно.

Он дает первое предупреждение ('init'), но затем не делает последнее. Я полностью сбит с толку и надеюсь, что кто-то может указать на мои ошибки! (где-то наверняка найдется нечто совершенно очевидное)

1 Ответ

2 голосов
/ 15 января 2012

Проблема в том, что вы вызываете JavaScript init(), который вызывает Flash testFunc() , прежде чем вы сделаете testFunc доступным (что происходит только после вызвать init() завершено).

Чтобы это исправить, просто поменяйте местами две строки:

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

Что касается получения объекта Flash в JavaScript, вы можете сделать это напрямую с помощью document.getElementById('swf_object'), но это возможно и с помощью jQuery:

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