使用Ember中的操作播放/暂停Jquery切换

时间:2014-06-24 22:48:08

标签: jquery ember.js

我正在使用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的新手,但也许我这样做的方法可以用不同的,更有效的方式完成。

1 个答案:

答案 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(); 
        }
  },

}