Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 初始化一个可能的无限数组?_Javascript_Arrays - Fatal编程技术网

Javascript 初始化一个可能的无限数组?

Javascript 初始化一个可能的无限数组?,javascript,arrays,Javascript,Arrays,我试图让沙子从鼠标上落下(为了测试,我已经将沙子的x和y更改为画布的中心。) 我的一个功能有问题。drawSand()将不会运行-我相信这是因为sandObj[]无法在手动之前初始化,但我不确定。我试图通过将数组限制为200个元素来初始化它,但这似乎没有任何帮助。我添加了一些布尔值来测试函数是否正在完成,draw是唯一一个没有完成的函数(除了drawPaintTool,它不是故意启用的),任何帮助/批评都会有帮助 “严格使用”; var canvas=document.getElementBy

我试图让沙子从鼠标上落下(为了测试,我已经将沙子的x和y更改为画布的中心。) 我的一个功能有问题。drawSand()将不会运行-我相信这是因为sandObj[]无法在手动之前初始化,但我不确定。我试图通过将数组限制为200个元素来初始化它,但这似乎没有任何帮助。我添加了一些布尔值来测试函数是否正在完成,draw是唯一一个没有完成的函数(除了drawPaintTool,它不是故意启用的),任何帮助/批评都会有帮助

“严格使用”;
var canvas=document.getElementById(“myCanvas”);
var ctx=canvas.getContext(“2d”);
var-ballX=0;
var-ballY=0;
var-ballRadius=20;
var sandObj=[];
var-sandActive=false;
var sandAmount=10;
var sandX=10;
var=0;
var testDrawPaintToolFunction=false;
var testPaintToolFunction=false;
var testDrawSandFunction=false;
var testMoveSandFunction=false;
函数绘图(){
clearRect(0,0,canvas.width,canvas.height);
sandAmountDisplay();
paintTool();
移动和();
drawSand();
}
函数drawPaintTool(){
ctx.beginPath();
ctx.弧(ballX,ballY,ballRadius,0,Math.PI*2);
ctx.fillStyle=“白色”;
ctx.fill();
ctx.closePath();
testDrawPaintToolFunction=true;
}
函数paintTool(){
如果(sandActive==true){
sandAmount++;
}
testPaintToolFunction=true;
}
函数drawSand(){
对于(变量i=0;i0&&relativeX0&&relativeY

Gamedev画布研讨会
* {
填充:0;
保证金:15;
}
帆布{
背景:#eee;
显示:块;
保证金:0自动;
}

此函数内部:

function drawSand() {
  for (var i = 0; i < sandAmount; i++) {
    sandObj = {
      x: canvas.width / 2,
      y: canvas.height / 2
    };
    ctx.beginPath();
    ctx.rect(sandObj[i].x, sandObj[i].y, 5, 5);
    ctx.fillStyle = "blue";
    ctx.fill();
    ctx.closePath();
  }
  testDrawSandFunction = true;
}
……而不是:

sandObj = {
  x: canvas.width / 2,
  y: canvas.height / 2
};

需要一些澄清。您说“drawSand()将不运行”。您的意思是函数正在运行并且正在抛出错误吗?如果它抛出错误,您应该发布错误。与其告诉我们它没有做什么,不如告诉我们它正在做什么。谢谢您的快速回复。所以,我实际上是通过记事本编程的——我知道这很愚蠢——但我不相信它会出错。如果您运行代码段,它似乎永远不会完成该函数。除了图纸和()之外,所有应该是真实的东西都完成了。快速响应-没关系。所以sandObj是朝着顶部初始化的,所以我认为它不需要再次初始化@艾米:除了告诉我什么在工作之外,它什么也做不了。唯一能导致函数永远无法完成的事情就是无限循环或抛出异常。我会仔细检查你的控制台是否有错误(确保它们没有被你的控制台过滤器隐藏),我已经盯着这个函数看了一个小时,甚至都没有意识到。谢谢,现在试试。就是这样。。。我觉得自己很傻-非常感谢雅各布!很高兴事情这么简单,我们有时都需要另一双眼睛。享受这个项目的乐趣!
sandObj = {
  x: canvas.width / 2,
  y: canvas.height / 2
};