2015-03-31 27 views
0

我正在练习一些Javascript。我使用了一个var来创建一个对象(因为在那之前我创建了一个类),现在我试图做同样的事情,而不是使用一个变量,我想使用一个数组。 虽然这是工作:Var工作,但使用数组做同样的工作时停止

function start(){ 
     var brick = new create_class_brick(10, 400, 10, 400, 0, 2.5, "brick"); 
     window.setInterval(function(){brick.MOVE_BRICK();}, 25); 

的MOVE_BRICK功能不起作用这里:

function start(){ 
     var i = 0; 
     vector_bricks[i++] = new create_class_brick(300, 500, 800, 600, 0, 2.5, "brick"); 
     vector_bricks[i++] = new create_class_brick(200, 200, 600, 300, 0, 2.5, "brick"); 
     for (i = 0; i<vector_bricks.length; i++){ 
      vector_bricks[i].create_brick(); 
      vector_bricks[i].MOVE_BRICK(); 
     } 
    } 

谁能给我个忙吗?

+0

是什么'create_brick'? – 2015-03-31 12:08:44

+0

你是否真的将'vector_bricks'作为数组初始化了? – adeneo 2015-03-31 12:09:08

+0

此外,定义“不起作用” - 你看到在控制台等错误? – 2015-03-31 12:12:06

回答

0

你忘了用window.setInterval调用函数move_brick吗?所以它不是循环的。

+0

我试过那个,但后来我从Firebug得到一个错误:TypeError:vector_bricks [i] is undefined window.setInterval(function(){vector_bricks [i] .MOVE_BRICK();},25); – nmn 2015-03-31 12:18:05

+0

我认为它应该是一个定义问题,如adeneo在评论中提到的那样。你能在你定义vector_bricks的地方显示代码吗? – 2015-03-31 12:27:03

+0

我将它定义为一个全局变量:var vector_bricks = new Array(); – nmn 2015-03-31 12:33:21

0

只需更改放置间隔的位置。 如果将其放入for循环中,则会出现错误。

这意味着你应该有这样的:

function start(){ 
    var i = 0; 
    vector_bricks[i++] = new create_class_brick(300, 500, 800, 600, 0, 2.5, "brick"); 
    vector_bricks[i++] = new create_class_brick(200, 200, 600, 300, 0, 2.5, "brick"); 
    setInterval(function(){ 
     for (var i = 0; i<vector_bricks.length; i++){ 
      vector_bricks[i].create_brick(); // Not sure what this is for 
      vector_bricks[i].MOVE_BRICK(); 
     } 
    }, 25); 
    }