A API externa é a parte do ActionScript que fornece um mecanismo para comunicação entre o ActionScript e o código em execução em um “aplicativo externo” que está agindo como contêiner para o Flash Player (normalmente um navegador da Web ou aplicativo de projetor dedicado). No ActionScript 3.0, a funcionalidade da API externa é fornecida pela classe ExternalInterface. Nas versões do Flash Player anteriores ao Flash Player 8, a ação
fscommand()
era usada para estabelecer a comunicação com o aplicativo de contêiner. A classe ExternalInterface é a substituição para
fscommand()
.
Nota:
Se precisar usar a função
fscommand()
antiga (por exemplo, para manter a compatibilidade com aplicativos mais antigos ou para interagir com um aplicativo de contêiner SWF de terceiros ou o Flash Player), ela ainda está disponível como uma função no pacote flash.system.
A classe ExternalInterface é um subsistema que permite a comunicação fácil entre o ActionScript e o Flash Player com JavaScript em uma página HTML.
A classe ExternalInterface só está disponível nas seguintes condições:
-
Em todas as versões compatíveis do Internet Explorer para Windows (5.0 e posterior)
-
Em qualquer navegador compatível com a interface NPRuntime, que no momento inclui o Firefox 1.0 e posterior, o Mozilla 1.7.5 e posterior, o Netscape 8.0 e posterior e o Safari 1.3 e posterior.
-
Em um aplicativo do AIR onde o SWF está incorporado em uma página HTML exibida pelo controle HTMLLoader.
Em todas as outras situações (como a execução em um player dedicado), a propriedade
ExternalInterface.available
retorna
false
.
No ActionScript, é possível chamar uma função JavaScript na página HTML. A API externa tem uma funcionalidade aprimorada em comparação com
fscommand()
:
-
É possível usar qualquer função JavaScript, não apenas as funções que podem ser usadas com a função
fscommand()
.
-
É possível transmitir qualquer número de argumentos, com qualquer nome; você não fica limitado a transmitir um comando e um único argumento de string. Desse modo, a API externa tem muito mais flexibilidade do que
fscommand()
.
-
É possível transmitir vários tipos de dados (como booliano, número e string); você não está limitado aos parâmetros String.
-
Você pode receber o valor de uma chamada e esse valor retorna imediatamente para o ActionScript (como o valor de retorno da chamada feita).
Importante:
Se o nome dado à ocorrência do Flash Player em uma página HTML (atributo
id
da tag
object
) incluir um hífen (
-
) ou outros caracteres que são definidos como operadores no JavaScript (como
+
,
*
,
/
,
\
,
.
, e assim por diante), as chamadas ExternalInterface do ActionScript não vão funcionar quando a página da Web do contêiner é visualizada no Internet Explorer. Além disso, se as tags HTML que definem a ocorrência do Flash Player (as tags
object
e
embed
) estiverem em uma tag HTML
form
, as chamadas ExternalInterface do ActionScript não vão funcionar.