2013-11-21 2 views
0

PhoneGap (Cordova)에서 간단한 자바 스크립트 게임을 만들었습니다. 사용자가 그림의 특정 기능을 찾고 있습니다. 올바른 기능을 발견하면 오디오 (정답 알림 표시)가 재생됩니다. 문제가 생겼지 만 징글 징은 X 초입니다. 이전 징글이 재생되기 전에 사용자가 다른 올바른 기능을 찾으면 (시간이 X보다 작음) 새 징글이 재생되지 않습니다. 이전의 것을 아직 끝내지 않은 경우 (그리고 사용자가 음향 적으로 마지막으로 정확한 피쳐를 추측하도록) 이전의 것을 덮어 쓰기 위해 모든 새로운 징글이 필요합니다. 여기 iOS의 PhoneGap : 현재 재생중인 미디어를 재생하기 전에

내 코드입니다 - 그것은 작동 내가 안드로이드에서 원하는 같이 :

것 같다
var gMedia; 

function playAudio(src, callback) { 

    if (gMedia) { 
     gMedia.stop(); 
     gMedia.release(); 
    } 

    var mediaSource; 
    if (iOS) mediaSource = "sounds/" + src; 
    else mediaSource = "/android_asset/www/sounds/" + src; 

    gMedia = new Media(mediaSource, onSuccess, onError); 
    gMedia.play(); 
    gMedia.setVolume('1.0');  

    // onSuccess Callback 
    function onSuccess() { 
     gMedia.release(); 
     if (callback && typeof(callback) === "function") { 
      callback.call(); 
     } 
    } 

    // onError Callback 
    function onError(error) { 
     gMedia.release(); 
    } 
} 

답변

1

, 문제는 당신이를 중지 할 때 그것은 또한 호출 할 것이기 때문에 당신이 당신의 성공 콜백에서 Media 객체를 해제한다는 것입니다 소리 (gMedia.stop()). 따라서 새 Media 개체를 만들면 즉시 해제됩니다.

onSuccess 함수에서 gMedia.release()을 제거한 후에 코드가 올바르게 작동하는지 테스트에서 나타냅니다.

+0

답장을 보내 주셔서 감사합니다. gMedia.release(); 거기에 멈춤이 없기 때문에 onSuccess에서? – Kozuch

+0

네, 맞습니다. 나는 내 대답을 편집했다. – jonas

+0

답변이 내 장치에서도 제대로 작동하는 것 같습니다. 다시 한 번 감사드립니다! – Kozuch

관련 문제