[英]PhoneGap on iOS: play new media before currently playing one ends
我有一個基於PhoneGap(Cordova)構建的簡單JavaScript游戲,用戶在其中尋找圖片中的某些功能。 找到正確的功能后,將播放音頻(提示正確答案的鈴聲)。 雖然我有一個問題-鈴聲的長度為X秒。 當用戶在上一個鈴聲開始播放之前找到另一個正確的功能(時間小於X)時,新的鈴聲將不會開始播放。 如果前一個尚未播放完畢,我需要每一個新的叮當聲都應覆蓋前一個(然后讓用戶從聲學上猜測最后一個正確的功能)。
這是我的代碼-可以在Android上正常運行:
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();
}
}
看來,問題在於您在成功回調中釋放了Media
對象,因為在停止聲音時也會調用它( gMedia.stop()
)。 因此,當您創建新的Media
對象時,它將立即被釋放。
在測試中,從onSuccess
函數中刪除gMedia.release()
后,我使您的代碼工作正常。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.