Tôi đang cố gắng tạo trình phát media player riêng của mình bằng các tùy chọn được cung cấp bởi cả SoundManager2 và Soundcloud.Javascript: Soundmanager2 và gọi lại sự kiện Soundcloud
Đây là mã hiện tại của tôi:
SC.stream('/tracks/' + this.media.mediaId, function(audio){
audio.load({
onload : function(){
var duration = this.duration;
},
onfinish : function(){
self.updatePlayButton();
console.log('Finished');
},
onresume : function(){
self.updatePlayButton();
console.log("resumed");
},
onstop : function(){
self.updatePlayButton();
console.log("Stopped");
},
onpause : function() {
self.updatePlayButton();
console.log('Paused');
},
whileplaying : function()
{
console.log(this.position);
self.updateScrubber(this.position/(this.duration/100));
self.$timeLeft.text(self.formatTime(this.position/1000));
console.log(totalPercent,'My position');
}
});
self.audio = audio.sID;
self.registerEvents();
});
tôi chơi âm thanh sử dụng:
soundManager.getSoundById(self.audio).togglePause();
Vở kịch âm thanh, và tất cả các callbacks được bắn cho phù hợp. Nhưng sau khi gọi lại "onfinish", khi tôi nhấn play một lần nữa nó sẽ phát lại âm thanh, nhưng nó sẽ không cháy bất kỳ sự kiện nào.
Tôi đã làm gì sai?
Chỉ cần rõ ràng, có vẻ như @ menzo-wijmenga đang sử dụng mẫu thiết kế 'var self = this' tương đối phổ biến này. Bộ điều khiển có thể có các phương thức như 'updatePlayButton' và' updateTimeLeft' trong khi truy cập thuộc tính 'duration' hoặc' position' của tùy chọn âm thanh thông qua sự kiện ràng buộc (tức là 'self' chỉ bộ điều khiển đang gọi luồng, trong khi' this' là đối tượng âm thanh). – elreimundo