2013-04-13 3 views
0

Y at-il un moyen de reconnaître toutes les chansons qui peuvent être jouées soundmanager2 quelques secondes.Lecture MP3 quelques secondes avec soundmanager2

J'initialisé le soundmanager2

soundManager.setup ({ 
    url: 'stockings /', 
    preferFlash: true, 
    onReady: function() { 
     console.log ('SM2 Ok!'); 
    } 
}); 

Et mes fichiers mp3 avec classe sm2_button, sont environ 10 fichiers au total et je voudrais que tout le monde à jouer quelques secondes.

<a href="songs/1.mp3" class="sm2_button"> </ a> 

J'espère que vous pouvez me donner un coup de main.

Répondre

0

Oui, j'ai joué un peu. merci pour cette question intéressante. Cela recherchera avec jQuery dans votre DOM pour une liste de fichiers mp3 et crée playList qui est joué en cliquant sur un bouton de démarrage.

<script> 
var playList = new Array(); 

$(document).ready(function() { 
    var soundFileList = new Array(); 
    $('ol#list2 li a').each(function() { // find soundfiles in <li><a data='*'> 
     $('ol#list2 li a').css('color','#000'); 
     soundFileList.push(this.getAttribute('data')); 
    }); 
    var newpl = { // create a selfmade playList object 
     nextSongNumber: 0, // track number with which the player starts 
     playLength: 7012, // milliseconds to play each track 
     idScheme: 'pl2_', // a given scheme as 'soundID+songNumber' 
     songUrl: './',  // url where your files are 
     songList: soundFileList, 
     fadeIn: 2000,  // fadeIn in milliseconds 
     fadeOut: 1000  // fadeOut in milliseconds 
    } 
    playList.push(newpl); // push it to our preset playlist 
    $('#startbutton').on('click',function(){ 
     // call list 0 in playList[] 
     playThisPlayList(0, playList); 
    }); 
}); 

soundManager.setup({ 
    url: './soundmanager2/swf/', 
    // preferFlash: false, 
    //flashPollingInterval: 4 , //in ms, overrules useFastPolling & useHighPerformance 
    useFastPolling: true, 
    useHighPerformance: true, 
    onready: function() { 

    function SkipThruPlayList(pl) { 
     if (pl.nextSongNumber+1 > pl.songList.length) { 
      //will be called after the last song in playList 
      pl.nextSongNumber=0; //needed for replay the playList 
      return; 
     } else { 
     if(songObject){ songObject.destruct(); } 
     var songObject = soundManager.createSound({ 
      id: pl.idScheme + pl.nextSongNumber, 
      url: pl.songUrl + pl.songList[ pl.nextSongNumber ], 
      multishot: false 
     }); 

     songObject.play({ 
      from: 0, 
      to: pl.playLength, 
      stream: true, 
      autoPlay: false, //true if starting with pageload 
      onplay: function() { 
      $('ol#list2 li:nth-child('+pl.nextSongNumber+') a').css('color','#f00'); 
      //console.log('now play:',this.url, 'songid:',this.id, 'laptime:', this.duration); 
      }, 
      onstop: function() { 
      //console.log('songid:',this.id, ', songend was at:',this.position); 
      // check your console, songend-positions are not stable values 
      this.destruct(); //free memory from old song, necessary? 
      SkipThruPlayList(pl); // start over, create & play next songObject 
      }, 
      whileplaying: function(){ 
      //this is a fadeIn/fadeOut mechanism 
      var now=this.position; 
      var mainVolume = 100; //we could set this up with playList 
      if (now <= pl.fadeIn) { 
       //fadeIn 
       this.setVolume(parseInt((now/pl.fadeIn)*mainVolume)); 
      } else if (now >= (pl.playLength-pl.fadeOut)) { 
       //fadeOut 
       this.setVolume(parseInt(((pl.playLength-now)/pl.fadeOut)*mainVolume)); 
      } else { 
       //play normal Volume between fadeIn and fadeOut 
       this.setVolume(mainVolume); 
      } 
      } 
     }); 
     pl.nextSongNumber++; 
     } 
    } 

    function playThisPlayList(i, playList) { 
     var count= playList[i].songList.length; 
     if (count > 0) { 
     //console.log('we have:',count,' songs to play'); 
     SkipThruPlayList(playList[i]); 
     } else { 
     //console.log('no songs in this songlist'); 
     return; 
     }; 
    } 
    //playThisPlayList(0, playList); 
    window.playThisPlayList = playThisPlayList; //Broadcast function into BOM 
    } 
}); 

</script> 

<button id="startbutton">start</button> 
<ol id="list2"> 
    <li><a href="#" data="./test0.mp3">test0.mp3</a></li> 
    <li><a href="#" data="./test1.mp3">test1.mp3</a></li> 
    <li><a href="#" data="./test2.mp3">test2.mp3</a></li> 
</ol> 

Il ya encore quelque chose qui pourrait être plus intelligent, mais cela fonctionne. Dans l'exemple, que se passe-t-il si une piste est plus courte que 4096ms, peut-être que vous devriez vérifier cela. J'espère que cela aide.

salutations de berlin

0

merci pour les idées. A la fin touche un petit code de fichier mp3-player-button.js, supporté par la documentation API et ajoute quelques lignes soundmanager2.

Dans la ligne:

thisSound.play(); 

Ajouter:

thisSound.play({ 
    whileplaying:function() { 
     if (thisSound.position >= 30000) { 
      self.stopSound(thisSound); 
     } 
    } 
}); 

Salutations du Pérou.

Questions connexes