Flash CS3-Dokumentation |
|||
| Programmieren mit ActionScript 3.0 > Verwenden der externen API > Verwenden der ExternalInterface-Klasse > Aufrufen von externem Code aus ActionScript | |||
Mit der ExternalInterface.call()-Methode wird Code in der Containeranwendung ausgeführt. Sie erfordert mindestens einen Parameter: einen String mit dem Namen der in der Containeranwendung aufzurufenden Funktion. Alle weiteren an die ExternalInterface.call()-Methode übergebenen Parameter werden als Parameter des Funktionsaufrufs an den Container weitergeleitet.
// Ruft die externe Funktion "addNumbers" auf,
// übergibt zwei Parameter und weist den Ergebniswert der
// Funktion der Variablen "result" zu.
var param1:uint = 3;
var param2:uint = 7;
var result:uint = ExternalInterface.call("addNumbers", param1, param2);
Wenn der Container eine HTML-Seite ist, ruft diese Methode die JavaScript-Funktion mit dem angegebenen Namen auf, die in einem script-Element der HTML-Seite definiert sein muss. Der Rückgabewert der JavaScript-Funktion wird an ActionScript zurückgegeben.
<script language="JavaScript">
// Addiert zwei Zahlen und sendet das Ergebnis zurück an ActionScript.
function addNumbers(num1, num2)
{
return (num1 + num2);
}
</script>
Wenn der Container ein anderer ActiveX-Container ist, bewirkt diese Methode, dass das Flash Player-ActiveX-Steuerelement das zugehörige FlashCall-Ereignis sendet. Der angegebene Funktionsname und alle Parameter werden in Flash Player in einen XML-String serialisiert. Der Container kann auf diese Informationen über die request-Eigenschaft des Ereignisobjekts zugreifen und so ermitteln, in welcher Form der Code ausgeführt werden soll. Für die Rückgabe eines Wertes an ActionScript wird mit dem Containercode die SetReturnValue()-Methode des ActiveX-Objekts aufgerufen und der Ergebniswert (in einen XML-String serialisiert) als Parameter dieser Methode übergeben. Weitere Informationen über das für diesen Datenaustausch verwendete XML-Format finden Sie unter XML-Format der externen API.
Unabhängig davon, ob der Container ein Webbrowser oder ein anderer ActiveX-Container ist, wird null zurückgegeben, wenn der Aufruf fehlschlägt oder die Containermethode keinen Rückgabewert festlegt. Die ExternalInterface.call()-Methode löst eine SecurityError-Ausnahme aus, wenn die Containerumgebung einer Sicherheits-Sandbox angehört, auf die der aufrufende Code keinen Zugriff hat. Sie können dies vermeiden, indem Sie in der Containerumgebung einen entsprechenden Wert für allowScriptAccess festlegen. Zum Ändern des Wertes von allowScriptAccess in einer HTML-Seite müssen Sie beispielsweise das entsprechende Attribut im object-Tag und im embed-Tag bearbeiten.
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/00000342.html