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ć.