在JS代码中找不到错误

时间:2011-07-01 05:04:55

标签: javascript canvas

我有一个“气泡发生器”,主要是工作,但没有正确清除气泡,我无法弄清楚为什么。现在已经盯着这一段时间了。具体来说,一些气泡在浮起时会被“清除”,其他气泡则没有,我看不出原因。哎呀!

http://jsfiddle.net/Dud2q/7/(放慢速度,以便你可以轻松看到一个泡泡)

逻辑流程(这只是描述小提琴中的代码):

  1. 创建一个imageData数组(长像素列表)

    imgData = ctx.getImageData(0, 0, w, h);
    
  2. 将新的随机气泡推到“气泡阵列”的开头,从而自下而上:

    for(var i=0, l=generators.length; i<l; i++){
        for(var j=0, m=0|Math.random()*6; j<m; j++){
            newBubbles.push( 0|generators[i] + j );
        }
        generators[i] = Math.max(0, Math.min(w, generators[i] + Math.random()*10 - 5));
    }
    bubbles.unshift(newBubbles);
    
  3. 循环绘制所有气泡,并且:

    1. 通过将Alpha通道设置为0(透明)来清除在最后一个循环中绘制的气泡:

      if(i<(l-1)){
          x = 0|bubbles[i+1][j];
          offset = y * w * 4 + x * 4;
          pixels[offset+3] = 0;
      }
      
    2. 绘制新气泡(offset+1 = g,offset+2 = b,offset+3 = alpha):

      x = 0|(bubbles[i][j] += Math.random() * 6 - 3);
      offset = y * w * 4 + x * 4;
      pixels[offset+1] = 0x66;
      pixels[offset+2] = 0x99;
      pixels[offset+3] = 0xFF;
      

1 个答案:

答案 0 :(得分:0)

将生成器的数量增加到更高的数量似乎可以使它工作。

EG。 50..times(createBubbleGenerator);几乎可以运作。

干杯!!!