簡體   English   中英

iOS上的PhoneGap:在當前播放結束之前播放新媒體

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM