我正在使用Soundmanager2播放器在Ember中构建音频播放器/播放列表。
我正在使用以下代码进行播放/暂停操作,这会触发播放和暂停的歌曲。
我遇到的问题是歌曲会播放,但暂停不起作用。我认为这是因为暂停动作中的变量mySound在技术上与播放动作中的mySound不同。
这是我的代码:
actions: {
play: function(){
var track_id = this.id;
var mySound = soundManager.createSound({
id: track_id,
url: 'https://api.soundcloud.com/tracks/' + track_id + '/stream?client_id=d61f17a08f86bfb1dea28539908bc9bf',
autoplay: false,
whileplaying: function() {
$('#positionBar').css('width', ((this.position/this.duration) * 100) + '%');
},
});
this.set("isPlaying", true);
soundManager.stopAll();
mySound.play();
},
pause: function(){
var track_id = this.id;
var mySound = soundManager.createSound({
id: track_id,
url: 'https://api.soundcloud.com/tracks/' + track_id + '/stream?client_id=d61f17a08f86bfb1dea28539908bc9bf',
autoplay: false,
whileplaying: function() {
$('#positionBar').css('width', ((this.position/this.duration) * 100) + '%');
},
});
this.set("isPlaying", false);
mySound.pause();
},
}
任何帮助都会有所帮助。我是Ember的新手,但也许我这样做的方法可以用不同的,更有效的方式完成。
答案 0 :(得分:1)
只需跟踪mySound
属性并在暂停方法中使用它。
actions: {
play: function(){
var track_id = this.id;
var mySound = soundManager.createSound({
id: track_id,
url: 'https://api.soundcloud.com/tracks/' + track_id + '/stream?client_id=d61f17a08f86bfb1dea28539908bc9bf',
autoplay: false,
whileplaying: function() {
$('#positionBar').css('width', ((this.position/this.duration) * 100) + '%');
},
});
this.set("isPlaying", true);
this.set('mySound', mySound);
soundManager.stopAll();
mySound.play();
},
pause: function(){
var mySound = this.get('mySound');
this.set("isPlaying", false);
if(mySound && mySound.pause){
mySound.pause();
}
},
}