javascript关闭错误
我正在尝试执行setTimeout,将变量传递给在setTimeout内被调用的函数。在经历了一些最初的失败之后,我使用Google找到了一个描述如何使用闭包的网站。我基本上遵循了这个示例,但不断收到一条错误消息: 参数列表后缺少 setTimeout正在调用此错误消息,但据我所知,一切都已关闭。如有任何帮助,将不胜感激:javascript关闭错误,javascript,closures,Javascript,Closures,我正在尝试执行setTimeout,将变量传递给在setTimeout内被调用的函数。在经历了一些最初的失败之后,我使用Google找到了一个描述如何使用闭包的网站。我基本上遵循了这个示例,但不断收到一条错误消息: 参数列表后缺少 setTimeout正在调用此错误消息,但据我所知,一切都已关闭。如有任何帮助,将不胜感激: var textureAtlas = new Image() function init() { textureAtlas.src = "images/text
var textureAtlas = new Image()
function init() {
textureAtlas.src = "images/textureatlast1.png";
var textureAtlasCoords = new Array("0,0", "100,0", "200,0", "300,0", "400,0", "500,0", "600,0");
var canvas = document.getElementById('textureAtlas');
if (canvas.getContext){
var ctx = canvas.getContext('2d');
for(var c=0; c<textureAtlasCoords.length; c++) {
var thisCoord = textureAtlasCoords[c];
var thisCoordSplit = thisCoord.split(",");
var thisX = thisCoordSplit[0];
var thisY = thisCoordSplit[1];
var a = setTimeout(animate(){myFunction(ctx, textureAtlas, thisX, thisY); ctx=null, textureAtlas=null, thisX=null, thisY=null},1000);
}
} else {
alert("Looks like your browser doesn't support HTML5");
}
}
function animate() {
ctx.drawImage(thisImg,thisX,thisY, 1024, 451, 0, 0, 1024, 451);
}
我不太清楚你想安排什么 我可以告诉您,setTimeout接受函数文本或函数引用,如下所示:
setTimeout(nameOfMyFunction, 1000); // reference -- note, NO parentheses here
setTimeout(function() { // literal -- the function being executed is "anonymous"
/* body of function here */
},
1000);
在第一种语法中,需要注意两件事:
MyFunction的函数名通常必须在其他地方定义;
使用此语法,您不能将任何参数传递给nameOfMyFunction。
如果传递一些参数很重要,那么您可以将调用封装在一个匿名函数中,将它们传递进来,如下所示:
setTimeout(function() {
nameOfMyFunction(someArg, otherArg);
},
1000);
现在还不清楚myFunction的用途。myFunction是否计划为动画制作准备绘图上下文?还是应该在设置动画之前进行其他一次性操作?我不完全清楚您要安排什么 我可以告诉您,setTimeout接受函数文本或函数引用,如下所示:
setTimeout(nameOfMyFunction, 1000); // reference -- note, NO parentheses here
setTimeout(function() { // literal -- the function being executed is "anonymous"
/* body of function here */
},
1000);
在第一种语法中,需要注意两件事:
MyFunction的函数名通常必须在其他地方定义;
使用此语法,您不能将任何参数传递给nameOfMyFunction。
如果传递一些参数很重要,那么您可以将调用封装在一个匿名函数中,将它们传递进来,如下所示:
setTimeout(function() {
nameOfMyFunction(someArg, otherArg);
},
1000);
现在还不清楚myFunction的用途。myFunction是否计划为动画制作准备绘图上下文?还是应该在设置动画之前执行其他一次性操作?替换:
var a = setTimeout(animate(){myFunction(ctx, textureAtlas, thisX, thisY); ctx=null, textureAtlas=null, thisX=null, thisY=null},1000);
}
借
我不知道为什么在动画之后包含{…}?替换:
var a = setTimeout(animate(){myFunction(ctx, textureAtlas, thisX, thisY); ctx=null, textureAtlas=null, thisX=null, thisY=null},1000);
}
借
我不知道为什么在动画之后包含{…}?尝试在setTimeout上添加单词函数:
尝试在setTimeout上添加word函数:
此外:
此处的上下文将抛出“undefined”,作为
var ctx = canvas.getContext('2d');
将仅在init范围内可用
严格来说,你不需要一个“;”在第一行之后:
var textureAtlas = new Image()
但是,这将是一个非常好的主意,请参见:另外:
此处的上下文将抛出“undefined”,作为
var ctx = canvas.getContext('2d');
将仅在init范围内可用
严格来说,你不需要一个“;”在第一行之后:
var textureAtlas = new Image()
但是,这将是一个非常好的主意,请参见:在setTimeout调用中,“animate”是一个输入错误吗?或者您正在尝试调用“animate”?animate之后的{…}有什么用?如果它有帮助的话,我正在使用这里给出的示例:我也是从这个页面引用的:在setTimeout调用中,“animate”是一个打字错误吗?或者你试图调用“animate”?animate之后的{…}有什么用?如果它有帮助的话,我正在使用这里给出的示例:我也在引用本页中的内容:以及其他我正在尝试在一个textureatlas上运行动画,animate函数将接收纹理图集上图像的x/y坐标和画布的参考以将其放置在其中。为了添加更多细节,我的理解可能是完全错误的,我在上面的评论中链接到的站点是,通过使用闭包,我将能够将变量传递给名为它的函数setTimeout-在本例中为animate,因为无法通过函数传递变量并将其作为第三个参数添加到setTimeout会在IE和其他方面引发问题。我正在尝试在textureatlas上运行动画,animate函数将接收纹理图集上图像的x/y坐标和画布的参考以将其放置在其中。为了添加更多细节,我的理解可能是完全错误的,我在上面的评论中链接到的站点是,通过使用闭包,我将能够将变量传递给名为它的函数setTimeout-在本例中为动画,因为您无法通过函数传递变量并将其作为第三个参数添加到setTimeout会在IE中引发问题。感谢您注意到缺少的;,这是我的一个输入错误。至于范围注释,我最初用这段代码进行了测试,结果很好:imgDrawctx,thisImg。。。函数imgDrawctx,thisImg{ctx.drawImagethisImg,0,0,1024,451,0,0,1024,451;}…你是说动画会抛出一个未定义的函数,因为它包含在setTimeout中吗?我确实想知道,实际上,闭包是一场噩梦,很少解释/记录,我认为它可能是可用的。闭包的问题在于,它们可能会因您意想不到的原因而起作用看起来你是对的,ctx是未定义的。我不熟悉闭包,我觉得我正在进入但丁的世界……我消除了setTimeout-var a=setTimeoutfunction{animatetextureAtlas,thisX,thisY;}中的错误
,400; 我误解了我引用的帖子……太好了,你会在不同的地方找到闭包——特别是在foreach循环中,人们想要改变自己正在迭代的东西。不要:谢谢你注意到失踪的人;,这是我的一个输入错误。至于范围注释,我最初用这段代码进行了测试,结果很好:imgDrawctx,thisImg。。。函数imgDrawctx,thisImg{ctx.drawImagethisImg,0,0,1024,451,0,0,1024,451;}…你是说动画会抛出一个未定义的函数,因为它包含在setTimeout中吗?我确实想知道,实际上,闭包是一场噩梦,很少解释/记录,我认为它可能是可用的。闭包的问题在于,它们可能会因您意想不到的原因而起作用看起来你是对的,ctx是未定义的。我不熟悉闭包,我觉得我正在进入但丁的世界……我摆脱了setTimeout-var a=setTimeoutfunction{animatetextureAtlas,thisX,thisY;},400;我误解了我引用的帖子……太好了,你会在不同的地方找到闭包——特别是在foreach循环中,人们想要改变自己正在迭代的东西。不要:我正在尝试将变量传递给animate我正在尝试将变量传递给animate我写的setTimeout错误:var a=setTimeoutfunction{animatetexturetaras,thisX,thisY;},400;我把setTimeout写错了:var a=setTimeoutfunction{animatetextureAtlas,thisX,thisY;},400;