Wymagania i zalety zewnętrznego interfejsu API

Flash Player 9 i nowsze wersje, Adobe AIR 1.0 i nowsze wersje

Zewnętrzny interfejs API jest częścią języka ActionScript, która udostępnia mechanizm komunikacji między ActionScript i kodem działającym w „aplikacji zewnętrznej”, która działa jako kontener dla programu Flash Player (jest to najczęściej przeglądarka sieci Web lub autonomiczna aplikacja projektora). W języku ActionScript 3.0 funkcję zewnętrznego interfejsu API udostępnia klasa ExternalInterface. W wersjach programu Flash Player poprzedzających wersję Flash Player 8 operacja fscommand() służyła do nawiązania komunikacji z aplikacją kontenera. Klasa ExternalInterface zastępuje metodę fscommand() .

Uwaga: Jeśli wymagane jest użycie starej funkcji fscommand() — na przykład w celu zachowania zgodności ze starszymi aplikacjami, w celu oddziaływania na aplikację kontenera SWF innej firmy albo samodzielną instancję programu Flash Player — jest ona dostępna jako funkcja na poziomie pakietu w pakiecie flash.system.

Klasa ExternalInterface jest podsystemem, który ułatwia komunikację między kodem ActionScript i programem Flash Player a kodem JavaScript na stronie HTML.

Klasa ExternalInterface jest dostępna tylko w następujących warunkach:

  • We wszystkich obsługiwanych wersjach programu Internet Explorer for Windows (wersja 5.0 i późniejsze)

  • W dowolnej przeglądarce, która obsługuje interfejs NPRuntime — aktualnie są to przeglądarki Firefox 1.0 i późniejsze, Mozilla 1.7.5 i późniejsze, Netscape 8.0 i późniejsze oraz Safari 1.3 i późniejsze.

  • W aplikacji AIR, gdy plik SWF jest osadzony na stronie HTML wyświetlanej przez element sterujący HTMLLoader.

We wszystkich innych sytuacjach (np. uruchamianie w autonomicznym odtwarzaczu), właściwość ExternalInterface.available zwraca wartość false .

Z kodu ActionScript można wywołać funkcję JavaScript na stronie HTML page. W porównaniu z operacją fscommand() zewnętrzny interfejs API oferuje następujące udoskonalone funkcje:

  • Możliwe jest korzystanie z dowolnych funkcji JavaScript, a nie tylko funkcji, które mogą być używane z funkcją fscommand() .

  • Możliwe jest wprowadzanie dowolnej liczby argumentów o dowolnych nazwach; nie obowiązuje ograniczenie do wprowadzenia polecania i argumentu w postaci jednego ciągu znaków. To zapewnia zewnętrznemu interfejsowi API większą elastyczność niż oferowała funkcja fscommand() .

  • Możliwe jest wprowadzanie różnych typów danych (np. Boolean, Number i String); nie obowiązuje ograniczenie dotyczące wprowadzania tylko parametrów String.

  • Interfejs umożliwia odebranie wartości wywołania, a ta wartość jest natychmiast zwracana w ActionScript (jako wartość zwracana wywołania).

Ważne: Jeśli nazwa określona w instancji Flash Player na stronie HTML (atrybut id znacznika object ) zawiera znak łącznika ( - ) lub inne znaki, które są zdefiniowane jako operatory w języku JavaScript (np. + , * , / , \ , . itd.), wywołania klasy ExternalInterface z kodu ActionScript nie działają, gdy zawierająca strona WWW jest wyświetlana w programie Internet Explorer. Ponadto jeśli znaczniki HTML definiujące instancję odtwarzacza Flash Player (znaczniki object i embed ) są zagnieżdżone w znaczniku HTML form , wywołania klasy ExternalInterface z kodu ActionScript także nie będą działać.