Переключение воспроизведения / приостановки Jquery с использованием действий в Ember

#jquery #ember.js

#jquery #ember.js

Вопрос:

Я создаю аудиоплеер / плейлист в Ember с помощью проигрывателя Soundmanager2.

Я использую следующий код для действий воспроизведения / паузы, которые запускают воспроизведение и паузу песни.

Проблема, с которой я сталкиваюсь, заключается в том, что песня будет воспроизводиться, но пауза не работает. Я предполагаю, что это связано с тем, что переменная MySound в действии pause технически отличается от MySound в действии play.

Вот мой код:

 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:

Просто следите за mySound свойством и используйте его в методе pause.

 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 amp;amp; mySound.pause){
           mySound.pause(); 
        }
  },

}
  

Комментарии:

1. Красивые. Спасибо. Работает отлично.