Chiamate al codice ActionScript dal contenitore

Un contenitore può chiamare esclusivamente il codice ActionScript presente in una funzione. Per chiamare una funzione ActionScript dall'applicazione contenitore, è necessario eseguire due operazioni: registrare la funzione con la classe ExternalInterface, quindi chiamarla dal codice del contenitore.

Come prima cosa, è necessario registrare la funzione ActionScript per indicare che deve essere resa disponibile al contenitore. Utilizzare il metodo ExternalInterface.available nel modo indicato di seguito:

function callMe(name:String):String
{
    return "busy signal";
}
ExternalInterface.addCallback("myFunction", callMe);

Il metodo addCallback() accetta due parametri: il primo, un nome di funzione quale una stringa, è il nome con cui la funzione sarà conosciuta dal contenitore. Il secondo parametro è la funzione ActionScript vera e propria che verrà eseguita quando il contenitore chiama il nome di funzione definito. Dal momento che questi nomi sono distinti, è possibile specificare un nome di una funzione che verrà utilizzata dal contenitore, anche se l'effettiva funzione ActionScript ha un nome diverso. Si tratta di una possibilità particolarmente utile se non si conosce il nome della funzione (ad esempio, se viene specificata una funzione anonima o se la funzione da chiamare viene determinata in fase di runtime).

Una volta che una funzione ActionScript è stata registrata con la classe ExternalInterface, il contenitore può chiamarla. Ciò può avvenire in diversi modi, a seconda del tipo di contenitore. Ad esempio, nel codice JavaScript in un browser Web, la funzione ActionScript viene chiamata utilizzando il nome della funzione registrata come se si trattasse di un metodo dell'oggetto browser Flash Player (ovvero, un metodo dell'oggetto JavaScript che rappresenta il tag object o embed). In altre parole, vengono passati i parametri e viene restituito un risultato come se venisse chiamata una funzione locale.

<script language="JavaScript">
    // callResult gets the value "busy signal"
    var callResult = flashObject.myFunction("my name");
</script>
...
<object id="flashObject"...>
    ...
    <embed name="flashObject".../>
</object>

In alternativa, quando si chiama una funzione ActionScript in un file SWF in esecuzione in un'applicazione desktop, il nome della funzione registrata e tutti gli eventuali parametri devono essere serializzati in una stringa in formato XML. Quindi, la chiamata viene eseguita realmente chiamando il metodo CallFunction() del controllo ActiveX con la stringa XML come parametro. Per ulteriori informazioni sul formato XML utilizzato per questa comunicazione, vedere Il formato XML dell'API esterna.

In entrambi i casi, il valore restituito dalla funzione ActionScript viene ripassato al codice del contenitore, sia direttamente sotto forma di valore quando il chiamante è il codice JavaScript in un browser sia serializzato come stringa in formato XML quando il chiamante è un contenitore ActiveX.


Flash CS3

 

Inviami un messaggio e-mail quando vengono aggiunti dei commenti a questa | Rapporto sui commenti

Pagina corrente: http://livedocs.adobe.com/flash/9.0_it/main/00000343.html