2010-12-14 5 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 앱을 쓸 수 있도록하면이 도로가 더 내려갈 수 있습니다.

+0

'play()'메소드의 추가 된 예는 매개 변수를 사용하지 않기 때문에 가장 간단합니다. –

0

난 그냥 놀이 방법 하거든요이 올바르게 내가 코드가 인식하지 않는 answer.The 사이트를 받아 들일 수 없습니다 아직

:-) 나에게 정말 외국 보이는 guess.That 할 꽤 지식이 아니다 필요 나 이상하다. 내는 onModuleLoad

생성자 TESTPHONEGAP.Media에서 미디어를 사용하려고 할 때

나는 다음과 같은 오류가 (문자열, 새로운 명령() {})는 다음과 같이 클래스를 사용

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

      } 
     }); 
     m.play() 

정의되지 내 메인 onModuleLoad와 같은 파일에있는 "내부 클래스"

+0

사이트가 나를 인식하지 못하는 것은 이상한 일입니다. 나는 위의 대답도 받아들입니다. – james

+0

샘플이 잘못되었습니다. 생성자가 올바르지 않습니다. 대신 newInstance()를 사용하십시오. –

+0

새 대답이 아닌 의견을 사용하여 답변에 응답하십시오. 내 대답의 맨 아래에있는 "덧글 추가"를 클릭하십시오. –

관련 문제