Actionscript 3, плагин JQuery SWF Object и проблема ExternalInterface - PullRequest
1 голос
/ 01 октября 2010

Я пытаюсь написать простой flash mp3-плеер, используя JQuery, и это плагин SWF-объекта. Я добавляю 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. Когда я вызываю функции javascript из flash-объектов (используя ExternalInterface.call()), все работает нормально.

Но когда я пытаюсь вызвать функцию ActionScript из JavaScript, ничего не происходит. Я добавил функцию обратного вызова, как это:

ExternalInterface.addCallback("MyFunc",MyFunc);

И я перепробовал все возможные способы, которые нашел в интернете. Как:

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

Кроме того, найденное здесь решение: Как я могу вызвать функцию Actionscript, когда jQuery ссылается на .swf? не помогает. Я оставил надежду на это. Может быть, лучше использовать вспышку без помощи JQuery. Но должен быть какой-то способ сделать это.

Спасибо.

Ответы [ 3 ]

2 голосов
/ 17 ноября 2011

Просто добавьте параметр 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 голосов
/ 01 октября 2010

Попробуйте $('#player_external').get(0).MyFunc();

0 голосов
/ 02 октября 2010

Использование $('#myContent').get(0).method() работает для меня. Использование ссылки на массив для получения первого элемента также работает: $('#myContent')[0].method()

Я использую «динамическую» инъекцию swfobject.

...