JavaScript方法是';找不到
我有一个“目标”:JavaScript方法是';找不到,javascript,arrays,object,Javascript,Arrays,Object,我有一个“目标”: function Rock() { this.size = 30.0; this.body; this.isDead = false; this.vertexPosBuffer; this.vertexColBuffer; } 我给出了一个函数: Rock.prototype.Tick = function() { this.body.ApplyForce(new b2Vec2(0, 10), this.body.GetPo
function Rock()
{
this.size = 30.0;
this.body;
this.isDead = false;
this.vertexPosBuffer;
this.vertexColBuffer;
}
我给出了一个函数:
Rock.prototype.Tick = function()
{
this.body.ApplyForce(new b2Vec2(0, 10), this.body.GetPosition());
}
function TickRocks()
{
for(var rock in rocks)
{
rock.Tick();
}
}
然后我制作了一组岩石:
var rocks;
function NewRandomRock()
{
var newRock = new Rock;
var pos = new b2Vec2;
pos.x = Math.random()*(gl.viewportWidth+1);
pos.y = Math.random()*(gl.viewportHeight+1);
newRock.InitRand(pos);
rocks.push(newRock);
}
然后我调用Tick函数:
Rock.prototype.Tick = function()
{
this.body.ApplyForce(new b2Vec2(0, 10), this.body.GetPosition());
}
function TickRocks()
{
for(var rock in rocks)
{
rock.Tick();
}
}
现在问题来了,我得到了以下错误:
未捕获的TypeError:对象0没有方法“Tick”
虽然“InitRand(…)”方法(我以同样的方式添加到Rock中)确实有效
我做错了什么?您的问题是,在中使用
并不是为了迭代数组。它是用来枚举对象属性的
您应该使用普通for循环:
for(var i = 0; i < rocks.length; i++) {
rocks[i].Tick();
}
for(变量i=0;i
您的问题是,在
中使用不是为了迭代数组。它是用来枚举对象属性的
您应该使用普通for循环:
for(var i = 0; i < rocks.length; i++) {
rocks[i].Tick();
}
for(变量i=0;i
您必须初始化变量:
function Rock() {
this.size = 30.0;
this.body = {}; //Initialize at an object
...
}
var rocks = []; //Initalize an array
function NewRandomRock() {
...
另外,由于rocks
是一个数组,我建议使用for(;;)
:
函数ticklocks()
{
对于(var i=0,l=rocks.length;i您必须初始化变量:
function Rock() {
this.size = 30.0;
this.body = {}; //Initialize at an object
...
}
var rocks = []; //Initalize an array
function NewRandomRock() {
...
另外,由于rocks
是一个数组,我建议使用for(;;)
:
函数ticklocks()
{
对于(var i=0,l=rocks.length;这太愚蠢了!但是啊,好吧,现在我学到了一些东西:D谢谢!这太愚蠢了!但是啊,好吧,现在我学到了一些东西:D谢谢!我有一个‘Init’方法,我使用初始化所有变量;)(我这样做是因为有时我需要重新初始化对象).无论如何谢谢:我有一个'Init'方法,我使用初始化所有变量;)(我这样做是因为有时我需要重新初始化对象)。无论如何谢谢:D