Frage

Ich versuche, einige Flash bearbeiten Sie einen externen JavaScript-Funktionsaufruf zu machen, aber ohne Erfolg. Hier ist mein Actionscript 2.0-Code:

//testing external .js calls

import flash.external.ExternalInterface;

//attempting to make external js call

ExternalInterface.call("createPlaylist","It's my Life!");

und hier ist mein Javascript;

function createPlaylist(mess){
  alert("called createPlaylist: " + mess);
}

Ich habe viele Beispiele gesehen, und ich bin in erster Linie über die Verwendung von ExternalInterface.addCallback verwirrt. Ich brauche nicht das Javascript, etwas zu Flash zurückzukehren, so ist das notwendig?

Aus irgendeinem Grund, ich sehe nie die Warnung. Hat jemand irgendwelche Probleme in meinem Code sehen? Gibt es eine Bibliothek ExternalInterface ich nicht habe? Auch, was ist der beste Weg ExternalInterface zu verwenden (das heißt, Fehlerprüfung, etc.) Vielen Dank im Voraus ...

War es hilfreich?

Lösung

ExternalInterface.addCallback ist für Javascript, der Lage sein, in der Flash-Anwendung aufzurufen. Wenn Sie zum Beispiel eine HTML-Schaltfläche möchten, startet / stoppt ein Video, das Sie nur einen Rückruf für eine benannte Methode hinzufügen und Ihre js kann als nennen [Flashobject] .callback Methodennamen.

Ich würde sagen, dass der beste Weg ExternalInterface Methoden in Ihrer Anwendung hinzuzufügen ist eine Klasse für JS-Kommunikation für jede Interaktion Fall in der App einzurichten. Zum Beispiel:

public class ExternalVideoControl {

    private var video:MediaDisplay;

    public function ExternalVideoControl(video:MediaDisplay) {
        //ExternalInterface.addCallback  - one callback for each method you want to expose, pointing to a method within this class;
        //add listeners on the video player and point them to methods in this class, for example onProgress
    }
    public function playVideo():void {
        //play the video on the mediaDisplay
    }
    private function onProgress(event:ProgressEvent):void {
        //ExternalInterface.call - report progress back to javascript
    }
}

Um zu testen, ExternalInterface mehr direkt, versucht Aufruf

ExternalInterface.call("alert", "Hello World!");

Andere Tipps

Wie gesagt andere in den Kommentaren auf den Posten des Johan, sollten Sie zunächst prüfen, ob die externe Schnittstelle ist verfügbar von ExternalInterface.available überprüfen.

Other than that ... Wie beurteilen Sie die Flex-Anwendung starten? Zunächst muss es in einer Hülle eingeschlossen werden, die diesen JavaScript natürlich enthält. Das ist trivial. Aber falls Sie es als Datei aus dem lokalen Dateisystem starten (Browser-URL beginnt mit file: //), dann müssen Sie auch sicherstellen, dass die SWF-Datei, die die erforderlichen Berechtigungen hat eine JavaScript-Funktion auszuführen.

Sie müssen der SWF-Datei vertrauen, um es lokale Ressourcen wie Dateien oder JS auf lokale Dateien zugreifen machen können. Dazu erstellen, dass eine Datei wie myapp.cfg und den Pfad zur Datei als eine einzige Zeile zu dieser Zeile hinzufügen. Speichern Sie diese Datei in den Ordner Flashplayer. Auf Linux-Systemen ist dies ~ / .macromedia / Flash_Player / # Sicherheit / Flashplayer /.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top