paper.js + soundmanager声音表示

时间:2013-02-06 17:04:49

标签: javascript animation canvas soundmanager2 paperjs

我想通过声音管理器waveformData绘制实时画布数据并使其看起来像一个像http://paperjs.org/tutorials/animation/creating-animations/#moving-multiple-items一样平滑移动的均衡器线。问题是所有内容都重新绘制,看起来不是很顺利。任何想法如何改进它?

`

   paper.install(window);
   var soundOutput = [];

   $(document).ready(function(){
   soundManager.url = 'swf/';
   soundManager.flashVersion = 9;
   soundManager.useHTML5Audio = true;

   soundManager.onready(function() {
var song = soundManager.createSound({
       id: 'song',
       url: '4353.mp3',
       useWaveformData: true,
});
song.play();
var i = 0;
function data() {

  if (!(i % 4)) {
    for (n=0; n<20; n++) {
        soundOutput[n] = song.waveformData.left[n];
    }
  }
  i++;
  window.webkitRequestAnimationFrame(data);

}
data();
   });

canvas = document.getElementById("scene");
canvas.width = 632;
canvas.height = 660;
paper.setup('scene');
view.size = [500, 500];
var amount = 20;
var height = 60;

var path = new Path();
path.style = {
    strokeColor: new GrayColor(0.2),
    strokeWidth: 30,
    strokeCap: 'square'
};

for (var i = 0; i <= amount; i++) {
    path.add(new Point(i/amount * 500, 50));
}


   path.selected = true;
view.onFrame = function(event) {
    for (var i = 0; i <= amount; i++) {
        var segment = path.segments[i];

        segment.point.y = soundOutput[i] * 1000;
    }


}
  view.draw();

})`

1 个答案:

答案 0 :(得分:0)

您可以尝试降低帧速率:

setTimeout(function(){
  webkitRequestAnimationFrame(data)
}, 1000 / 20); // 20fps.