Próbuję zbudować własny odtwarzacz multimediów SoundCloud, korzystając z opcji dostępnych zarówno w SoundManager2, jak i Soundcloud.JavaScript: wywołanie zwrotne zdarzenia Soundmanager2 i SoundCloud
Tu jest mój bieżący kod:
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();
});
Gram audio przy użyciu:
soundManager.getSoundById(self.audio).togglePause();
spektaklu dźwiękowej i wszystkie wywołania zwrotne są odpowiednio zwolniony. Ale po wywołaniu "onfinish", po ponownym naciśnięciu play ponownie odtwarza dźwięk, ale nie spowoduje to żadnego z tych zdarzeń.
Co zrobiłem źle?
Dla jasności wygląda na to, że @ menzo-wijmenga używa względnie powszechnego wzorca 'var self = this'. Kontroler może mieć takie metody, jak 'updatePlayButton' i' updateTimeLeft' podczas uzyskiwania dostępu do atrybutu 'duration' lub' position' opcji audio poprzez wiązanie zdarzeń (np. 'Self' odnosi się do kontrolera, który wywołuje strumień, podczas gdy' this' odnosi się do obiekt audio). – elreimundo