function draw(data)
{
var i = 0;
var checkduplicates = new Array();
drawOne(i);
//console.log(checkduplicates) Problem!!!;
function drawOne(i)
{
//photos is a object that has been omitted for simplicity
var picinfo = photos[Math.floor(Math.random()*photos.length)];
checkduplicates.push(picinfo);
img.onload = function()
{
var ctx = document.getElementsByClassName("canvas")[i].getContext('2d');
// Draw pieces
ctx.drawImage(img,0,0,132,150);
//ctx.fillText("haha",0,0);
ctx.drawImage(frame,0,0,133,152);
i++;
if (i != canvaslength)
{
drawOne(i);
}
}
//console.log(checkduplicates.length);
}
}
嘿,我声明的绘制函数内的drawOne功能,从而使局部变量checkduplicates与上述内部功能drawOne访问。但是,在drawOne函数运行16次之后,数组checkduplicates应该填充有对象,这由drawOne中的console.log证明,显示了16个对象在数组中。但是,我标记为“Problem”的console.log函数显示该数组只有第一个对象,而其他console.logs则显示该数组已充满对象。我不明白为什么,因为修改数组的唯一方法是通过已被调用了16次的“push”方法,并且如果我注释掉img.onload部分,console.log中的注释“problem”显示数组充满了对象。为了简单起见,我故意省略了其他代码,并且我的萤火虫不会抱怨错误。谢谢阵列不能被填充
等待 - “我”从哪里来?和“照片”?和“checkduplicates”?你还没有发布足够的代码。 – Pointy 2011-04-18 23:56:53
我初始化为0;我会修好它。谢谢 – 2011-04-18 23:58:14