Aufrufen von ActionScript-Code aus dem Container

Ein Container kann nur ActionScript-Code aufrufen, der sich innerhalb einer Funktion befindet. Anderer ActionScript-Code steht für Container nicht zur Verfügung. Um eine ActionScript-Funktion aus einer Containeranwendung aufzurufen, sind zwei Schritte erforderlich: Registrieren der Funktion bei der ExternalInterface-Klasse und anschließendes Aufrufen der Funktion aus dem Containercode.

Zunächst müssen Sie die ActionScript-Funktion registrieren, um anzugeben, dass sie für die Containeranwendung zur Verfügung steht. Verwenden Sie die ExternalInterface.addCallback()-Methode wie folgt:

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

Für die addCallback()-Methode sind zwei Parameter erforderlich. Der erste ist ein String mit dem Funktionsnamen, unter dem die Funktion im Container bekannt ist. Der zweite Parameter ist die eigentliche ActionScript-Funktion, die ausgeführt wird, wenn im Container der definierte Funktionsname aufgerufen wird. Da diese Namen voneinander unabhängig sind, können Sie zur Verwendung für den Container einen Funktionsnamen angeben, der vom eigentlichen Namen der ActionScript-Funktion abweicht. Dies ist besonders hilfreich, wenn der Funktionsname unbekannt ist, beispielsweise wenn eine anonyme Funktion angegeben oder die aufzurufende Funktion zur Laufzeit festgelegt wird.

Nachdem eine ActionScript-Funktion bei der ExternalInterface-Klasse registriert wurde, ist sie aus dem Container aufrufbar. Die Vorgehensweise zum Aufrufen hängt vom Containertyp ab. Beispielsweise werden ActionScript-Funktionen aus JavaScript-Code in einem Webbrowser mithilfe des registrierten Funktionsnamens aufgerufen, als wären sie Methoden des Flash Player-Browserobjekts (d. h. Methoden des JavaScript-Objekts, das das Tag object oder embed repräsentiert). Das bedeutet, dass Parameter übergeben werden und ein Rückgabewert zurückgegeben wird, wie dies beim Aufrufen einer lokalen Funktion der Fall wäre.

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

Im Gegensatz dazu müssen beim Aufrufen einer ActionScript-Funktion in einer SWF-Datei, die in einer Desktopanwendung ausgeführt wird, der registrierte Funktionsname und alle Parameter in einen XML-formatierten String serialisiert werden. Der eigentliche Aufruf erfolgt dann durch Aufrufen der CallFunction()-Methode des ActiveX-Steuerelements mit dem XML-String als Parameter. Weitere Informationen über das für diesen Datenaustausch verwendete XML-Format finden Sie unter XML-Format der externen API.

In beiden Fällen wird der Rückgabewert der ActionScript-Funktion an den Containercode zurückgegeben, entweder direkt als Wert (beim Aufruf aus JavaScript-Code in einem Browser) oder serialisiert als XML-formatierter String (beim Aufruf aus einem ActiveX-Container).


Flash CS3

 

Eine E-Mail an mich senden, wenn dieser Seite Kommentare hinzugefügt werden | Kommentarbericht

Aktuelle Seite: http://livedocs.adobe.com/flash/9.0_de/main/00000343.html