Requisiti e vantaggi dell'API esterna

Flash Player 9 e versioni successive, Adobe AIR 1.0 e versioni successive

L'API esterna è una porzione di ActionScript che fornisce un meccanismo di comunicazione tra ActionScript e il codice in esecuzione su un'applicazione cosiddetta “esterna”, ovvero un'applicazione che funge da contenitore per Flash Player (di solito, si tratta di un browser Web o di un'applicazione proiettore autonoma). In ActionScript 3.0, la funzionalità dell'API esterna è fornita dalla classe ExternalInterface. Nelle versioni di Flash Player precedenti a Flash Player 8, l'azione fscommand() viene utilizzata per effettuare la comunicazione con l'applicazione contenitore. La classe ExternalInterface sostituisce fscommand().

Nota: se avete l'esigenza di utilizzare ancora fscommand() (ad esempio, per mantenere la compatibilità con applicazioni precedenti o per interagire con un'applicazione contenitore di terze parti o con la versione autonoma di Flash Player), la funzione è ancora disponibile come funzione a livello di pacchetto nel pacchetto flash.system.

La classe ExternalInterface è un sottosistema che consente facili comunicazioni da ActionScript e Flash Player a una pagina HTML contenente JavaScript o a un'applicazione desktop che incorpora un'istanza di Flash Player.

La classe ExternalInterface è disponibile solo nelle seguenti circostanze:

  • In tutte le versioni supportate di Internet Explorer per Windows (5.0 e versioni successive)

  • In un'applicazione contenitore, come un'applicazione desktop, che utilizza un'istanza del controllo ActiveX di Flash Player

  • In tutti i browser che supportano l'interfaccia NPRuntime, tra cui attualmente Firefox 1.0 e versioni successive, Mozilla 1.7.5 e versioni successive, Netscape 8.0 e versioni successive e Safari 1.3 e versioni successive.

In tutte le altre situazioni (ad esempio, nel caso di esecuzione in un lettore autonomo) in cui la proprietà ExternalInterface.available restituisce false.

Da ActionScript, è possibile chiamare una funzione JavaScript sulla pagina HTML. L'API esterna offre la seguente funzionalità perfezionata rispetto a fscommand():

  • Potete utilizzare qualsiasi funzione JavaScript, non solo le funzioni utilizzabili con fscommand().

  • È possibile passare un numero qualsiasi di argomenti, con tutti i nomi; non ci sono limitazioni al passaggio di un comando e di un unico argomento String. In questo modo, l'API esterna risulta molto più flessibile rispetto a fscommand().

  • Potete passare diversi tipi di dati (come Boolean, Number e String); la scelta non è limitata ai parametri String.

  • Potete ricevere il valore di una chiamata e restituire immediatamente tale valore ad ActionScript (come valore restituito della chiamata eseguita).

Importante: se il nome fornito all'istanza di Flash Player in una pagina HTML (l'attributo id del tag object) include un trattino (-) o altri caratteri che sono definiti come operatori in JavaScript (ad esempio, +, *, /, \, . e così via), le chiamate a ExternalInterface da ActionScript non funzionano quando la pagina Web contenitore viene visualizzata in Internet Explorer. Inoltre, se i tag HTML che definiscono l'istanza di Flash Player (i tag object e embed) sono nidificati in un tag form HTML, le chiamate a ExternalInterface da ActionScript non funzionano.