使用画布在JS中的重力模拟很少

时间:2012-08-10 20:26:25

标签: javascript simulation

所以,我试图创建一些圈子,然后我希望它们倒下。下面是代码和演示:demo FireBug告诉我,未定义对象的方法“move”没有定义,所以当我想创建一个obect数组时,某些东西必定是错误的。纠正我的错误并考虑到我刚刚开始在JS中学习面向对象编程。

3 个答案:

答案 0 :(得分:4)

不是创建多个事件,而是在那里创建一个事件并循环:

  setInterval(function(){
    ctx.clearRect(0,0,1000,1000);  //Clear the canvas here
    for (i = 0;i<bubble.length;++i)
    {
      bubble[i].move();
      bubble[i].redraw();
    }
  },32);

问题是范围问题。 您编写它的方式i在执行的所有事件中的值都为10.

工作小提琴:http://jsfiddle.net/some/fGChQ/16/

你的另一个问题是你在重绘中清除画布......对于每一个圆圈。

答案 1 :(得分:1)

我已经提出了fork这个解决循环问题的问题,画布矩形的清除似乎也存在导致一些干扰的问题

答案 2 :(得分:-1)

for (i = 0;i<bubble.length - 1; ++i)
{
    console.log(bubble[i].y)
    setInterval(function(){
        bubble[i].move();
        bubble[i].redraw();
    },32);
}

bubble.length为10,数组为索引0-9。 bubble [10]未定义,因此您无法调用方法移动它。