Requisitos e vantagens da API externa

Flash Player 9 e posterior, Adobe AIR 1.0 e posterior

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.