2010-12-14 6 views

Antwort

0

Grundsätzlich klingt es wie es so etwas wie dieses wäre:

public final class Media extends JavaScriptObject { 
    protected Media() {} 

    public static native final Media newInstance(String src, Command command) /*-{ 
    var callback = function() { command.execute(); }; 
    return new Media(src, callback); 
    }-*/; 

    public native final void getCurrentPosition(AsyncCallback<String> command) /*-{ 
    var callback = function(position) { command.onSuccess('' + position); }; 
    this.getCurrentPosition(callback); 
    }-*/; 
    public native final void play() /*-{ 
    this.play(); 
    }-*/; 
    //... more methods here 
} 

Verbrauch:

Media m = Media.newInstance("http://www.example.com/src.mp3", new Command() { 
    @Override 
    public void execute() { 
    // Code executed after Media is created. 
    } 
}); 
m.getCurrentPosition(new AsyncCallback<String>() { 
    @Override 
    public void onSuccess(String position) { 
    Window.alert(position); 
    } 
}); 
m.play(); 

Das ist eine grobe Skizze ist, wenn Sie mehr über das, was die Art Wesen kennen an den Rückruf übergeben ist, können Sie schönere Dinge tun, wie es ein int oder ein anderer JS Overlay-Typ sein.

Die API ist irgendwie komisch, weil alles scheinbar asynchron ist, aber das ist das Leben.

Sobald Sie den Dreh von GWT JSNI Bindings bekommen haben, ist es ziemlich einfach.

Wenn Sie diesen Weg weiter beschreiten, wäre es großartig, wenn Sie Ihre GWT-Wrapper-Bibliothek öffnen, damit andere GWT-Entwickler einige iPhone/Android-Apps schreiben können.

+0

Ein Beispiel für die Methode 'play()' hinzugefügt, die am einfachsten ist, da sie keine Parameter benötigt. –

0

Ich brauche nur das Spiel Methode really.I ist nicht ganz so gut informiert dies richtig zu tun ich guess.That Code mir wirklich fremd :-)

sieht

Immer noch nicht Ihre answer.The Website akzeptieren kann nicht erkennen, mir ist es seltsam.

ich folgende Fehlermeldung erhalten, wenn die Medien in meinem onModuleLoad

Der Konstruktor TESTPHONEGAP.Media zu verwenden versuchen (String, neuer Befehl() {}) ist nicht definiert

Media m = new Media("test.mp3", new Command() { 
      @Override 
      public void execute() { 

      } 
     }); 
     m.play() 

Klasse Verwendung als eine "innere Klasse" in der gleichen Datei wie meine Hauptversion onModuleLoad

+0

Das ist seltsam, die Seite erkennt mich nicht. Ich versuche auch die obige Antwort zu akzeptieren. – james

+0

Meine Probe war falsch. Der Konstruktor ist nicht korrekt, stattdessen benutze 'newInstance()'. –

+0

Bitte verwenden Sie Kommentare, keine neuen Antworten, um auf meine Antwort zu antworten. Klicken Sie auf "Kommentar hinzufügen" am Ende meiner Antwort. –

Verwandte Themen