2010-12-14 6 views

答えて

0

それはこのようなものになるだろうように基本的には聞こえる:

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 
} 

使用法:

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

あなたはタイプがいるかについての詳細を知っていれば、ラフスケッチですあなたがintまたは別のJSオーバーレイタイプであるように、より良いことをすることができるということがコールバックに渡されました。

APIはすべて非同期であると思われますが、それは人生です。

GWT JSNIバインディングを作成すると、かなり簡単になります。

GWTラッパーライブラリをオープンソース化すれば、他のGWT開発者がiPhone/Androidアプリを書くことができるようになります。私はちょうど私がコードが

はまだあなたのanswer.Theサイトが認識しない受け入れることはできません:-)私には本当に外国に見えるguess.Thatこれを正しく行うにはかなりのように精通していないですreally.I playメソッドを必要とする

+0

'play()'メソッドの追加例です。これはパラメータを取らないので最も簡単です。 –

0

私はそれは奇妙です。私のonModuleLoad

コンストラクタTESTPHONEGAP.Mediaでメディアを使用しようとすると

は、私は次のエラーを取得する(文字列、新しいコマンド(){})は、としてあなたのクラスを使用して

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

      } 
     }); 
     m.play() 

定義されていません私のメインのonModuleLoadと同じファイル内の "内部クラス"

+0

これはサイトが私を認識していないことが奇妙です。私は上記の回答も受け入れるよう努めています。 – james

+0

サンプルが正しくありませんでした。コンストラクタが正しくない場合は、代わりに 'newInstance()'を使用してください。 –

+0

新しい回答ではなく、コメントを使用して回答にお答えください。私の答えの一番下にある「コメントを追加」をクリックしてください。 –

関連する問題