[英]Howler js pause/resume trouble
我正在使用Howler js庫在通過Electron運行的應用程序中設置播放器。 首先,一切似乎都運行良好,但是使用該應用程序幾周后,便反復出現了一個錯誤,但並沒有持續發生: pause()
函數不起作用。 這是一些代碼:
初始化:
var is_paused = true;
var currentTrack = "track1";
var tracks = {"track1" : new Howl({urls: ['path/to/track1.mp3']}),
"track2" : new Howl({urls: ['path/to/track2.mp3']}),
"track3" : new Howl({urls: ['path/to/track3.mp3']})
};
然后,我有幾個按鈕用於播放/恢復,暫停,停止和播放特定曲目:
$('#playS').click(function(){
if (is_paused){
tracks[currentTrack].play();
is_paused = false;
}
});
$('#pauseS').click(function(){
tracks[currentTrack].pause();
is_paused = true;
});
$('.trackBtn').click(function(){
tracks[currentTrack].stop();
currentTrack = $(this).attr('id');
tracks[currentTrack].play();
is_paused = false;
});
問題是有時(通常在播放曲目40-45分鍾之后), pause()
函數什么都不做,這真是令人討厭,因為我需要暫停曲目並播放另外30秒的文件,然后恢復當前曲目。 發生錯誤時,我檢查了控制台,它什么也沒說。 我不知道該錯誤來自何處,關於該庫的工作原理信息不多。 我真的需要一些幫助,謝謝。
編輯:還有一件事情,當pause()
不起作用時,如果我單擊play()
,軌道將從頭開始播放,並且我可以控制軌道的第二個實例。 就像初審已到盡頭,但仍在播放。
在不知道您使用的是哪個版本的Howler或其他什么代碼可能使事情混亂的情況下,我認為可能會有所幫助:您無需跟蹤暫停狀態。 “播放”方法可以解決這一問題。 我已經使用以下方法使其工作:
// If it's paused, it's not playing, so... paused = !myHowlInstance.playing();
我注意到的另一件事是,您有currentTrack = $(this).attr('id');
在您的(我認為是)停止按鈕中。 不幸的是,我對JQuery的了解還不足以知道這是否有什么問題(我自己是Dojo愛好者)。 但是看起來currentTrack
可能被設置為不在列表中的某個值(這會破壞tracks[currentTrack]
)。 您可能需要進入控制台並鍵入tracks["track1"]
, currentTrack
等以查看其值。 您甚至可以做tracks[currentTrack].play();
看看會發生什么。 我不確定您是否知道可以做到這一點(當我發現這對我有很大幫助)。
至於從一開始就開始的“暫停”,我目前正在自己中掙扎。 目前,尚無明確的方法來執行此操作(沒有resume()
, pause(false)
等),而且我在Google和SO上還看到了關於該主題的更多問題,所以您並不孤單。 我已經嘗試過seek
方法,但是沒有運氣。 如果/當我取得突破時,我會發表評論。 :)
編輯:我想通從頭開始。 它確實涉及“搜索”,還涉及整個“實例ID”概念(我從文檔中從未真正理解過它的重要性)。
這是我正在從事的項目(也是游戲)的示例; 它不涉及JQuery(很抱歉),但是它應該為您提供解決問題的要點。
var myBgMusic = new Howl(...);
var myMusicID = myBgMusic.play(); // The docs say play() returns an ID, and I'll be passing that to "seek" later.
var paused = false;
var saveSeek;
function TogglePause() {
if (paused) {
myBgMusic.play(myMusicID);
myBgMusic.seek(saveSeek, myMusicID);
} else {
myBgMusic.pause();
saveSeek = myBgMusic.seek(myMusicID);
}
};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.