Domanda

Sto cercando di modificare alcuni flash per effettuare una chiamata esterna alla funzione javascript, ma senza successo. Ecco il mio codice actionscript 2.0:

//testing external .js calls

import flash.external.ExternalInterface;

//attempting to make external js call

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

ed ecco il mio javascript;

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

Ho visto molti esempi e sono principalmente confuso sull'uso di ExternalInterface.addCallback . Non ho bisogno del javascript per restituire nulla in flash, quindi è necessario?

Per qualsiasi motivo, non vedo mai l'avviso. Qualcuno vede qualche problema nel mio codice? Esiste una libreria ExternalInterface che non ho? Inoltre, qual è il modo MIGLIORE per usare ExternalInterface (ad es. Controllo degli errori, ecc.) Grazie in anticipo ...

È stato utile?

Soluzione

ExternalInterface.addCallback è per javascript per poter chiamare nell'applicazione Flash. Se, ad esempio, vuoi un pulsante HTML che avvia / arresta un video, aggiungi semplicemente una richiamata per un metodo denominato e il tuo js può quindi chiamare [FlashObject] .callback nome metodo.

Direi che il modo migliore per aggiungere metodi ExternalInterface nella tua applicazione è impostare una classe responsabile della comunicazione JS per ogni caso di interazione nell'app. Ad esempio:

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
    }
}

Per testare ExternalInterface in modo più diretto, prova a chiamare

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

Altri suggerimenti

Come altri hanno detto nei commenti al post di Johan, dovresti prima verificare se l'interfaccia esterna è disponibile controllando ExternalInterface.available.

A parte questo ... come si avvia l'applicazione Flex? Innanzitutto deve essere incluso in un wrapper che contenga questo JavaScript ovviamente. È banale. Tuttavia, nel caso in cui lo avvii come file dal filesystem locale (l'URL del browser inizia con il file: //), devi anche assicurarti che il file SWF disponga delle autorizzazioni necessarie per eseguire una funzione JavaScript.

Devi fidarti del file SWF per renderlo in grado di accedere a risorse locali come file o JS su file locali. Per fare ciò, crea un file come myapp.cfg e aggiungi il percorso al tuo file come una singola riga a questa riga. Inserire questo file nella cartella FlashPLayerTrust. Sui sistemi Linux questo è ~ / .macromedia / Flash_Player / # Security / FlashPlayerTrust /.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top