2013-04-13 4 views
0

soundmanager2 몇 초 재생할 수있는 모든 노래를 인식하는 방법이 있습니까?soundmanager2를 사용하여 MP3 몇 초 재생

나는 soundmanager2

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

그리고 sm2_button 클래스 내 mp3 파일을 초기화 한 총 10 파일은 내가 몇 초를 재생하는 모든 사람을 싶습니다.

나에게 도움이되기를 바랍니다.

답변

0

나는 조금 놀았다. 이 흥미로운 질문에 감사드립니다. mp3 파일 목록을 보려면 DOM에서 jQuery를 찾아 시작 버튼을 클릭하여 재생되는 playList을 만듭니다.

<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> 

더 똑똑 할 수있는 무언가가 여전히 있지만 작동합니다. 예를 들어, 트랙이 4096ms보다 짧으면, 어쩌면 이것을 체크해야할까요? 희망이 도움이됩니다.

인사말 베를린

0

감사합니다. 끝에 API 문서가 지원하는 작은 파일 코드 mp3-player-button.js를 터치하고 soundmanager2 몇 줄을 추가합니다. 라인에서

:

thisSound.play(); 

추가 : 페루에서

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

인사말.