2010-12-14 16 views

Répondre

0

Fondamentalement, il semble que ce serait quelque chose comme ceci:

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 
} 

Utilisation:

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(); 

C'est une esquisse, si vous en savez plus sur ce que l'être de type passé au rappel est que vous pouvez faire des choses plus agréables comme avoir un int ou un autre type de recouvrement JS. L'API est un peu bizarre parce que tout est apparemment asynchrone, mais c'est la vie. Une fois que vous avez appris à écrire des liaisons GWT JSNI, c'est assez simple. Si vous finissez par aller plus loin dans cette voie, ce serait génial si vous ouvriez votre bibliothèque d'enveloppes GWT pour que d'autres développeurs de GWT puissent écrire des applications iPhone/Android.

+0

Ajout d'un exemple de la méthode 'play()', qui est la plus simple car elle ne prend aucun paramètre. –

0

Je juste besoin la méthode de jeu really.I suis pas tout à fait compétent pour le faire correctement le code que je guess.That ressemble vraiment étranger à moi :-)

peut toujours pas accepter votre site réponse.Le ne reconnaît pas moi c'est étrange.

je reçois l'erreur suivante lorsque vous essayez d'utiliser les médias dans mon onModuleLoad

Le constructeur TESTPHONEGAP.Media (String, nouvelle commande() {}) est définie

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

      } 
     }); 
     m.play() 

Utilisation de votre classe une "classe interne" dans le même fichier que mon onModuleLoad principal

+0

C'est bizarre le site ne me reconnaît pas. J'essaie d'accepter la réponse ci-dessus. – james

+0

Mon échantillon était incorrect. Le constructeur n'est pas correct, utilisez 'newInstance()' à la place. –

+0

Veuillez utiliser des commentaires, pas de nouvelles réponses, pour répondre à ma réponse. Cliquez sur "Ajouter un commentaire" au bas de ma réponse. –