Как я могу вызвать свой собственный javascript API в моем SWF-файле, динамически встроенном с помощью swfOject?

#javascript #flash #dynamic #swfobject #externalinterface

#javascript #flash #динамический #swfobject #externalinterface

Вопрос:

Я использую swfObject library для динамического встраивания MP3-плеера, который я создал во Flash CS5. В .fla файле я объявил список методов, которые могут быть вызваны через Javascript (используя flash.external.ExternalInterface класс flash).

Это не проблема, поскольку все эти функции работают должным образом при вызове из консоли Google Chrome. Однако SWFObject предоставляет способ вызова javascript API, только если он .swf был включен статически swfobject.registerObject() (т. Е. с помощью .swf ), но я не могу найти способ достичь той же цели, когда он включен динамически swfobject.embedSWF() (т. Е. с помощью в).

Заранее спасибо за вашу помощь и дополнения 🙂

Комментарии:

1. разве хороший document.getElementById не делает свое дело?

2. я пробовал это, но это работает только с консоли, а не тогда, когда document.getElementById() код находится внутри моих тегов <script>

3. Вы должны написать тег script после элемента, который вы хотите получить на своей странице.

Ответ №1:

При использовании swfobject.embedSWF вы можете указать идентификатор swf-объекта в attributes параметрах :

swfobject.embedSWF(swfUrl, идентификатор, ширина, высота, версия, expressInstallSwfurl, flashvars, параметры, атрибуты, обратный вызов FN)

Пример :

 swfobject.embedSWF(
    "YourFlash.swf", "WhereToPlaceThis", "0px", "0px", "10.0.0",
    "expressInstall.swf", {}, {}, { id : "IdOfTheSWF" },
    function () {
         var SWF = document.getElementById("IdOfTheSWF"); // That's your SWF //
         SWF.yourFlashFunction(); // And you can invoke function //
    }
);