gpt4 book ai didi

JavaScript 在 for 循环中返回 var

转载 作者:行者123 更新时间:2023-11-28 16:18:13 25 4
gpt4 key购买 nike

我试图理解实现 Canvas /上下文对象的代码。如果在 Canvas 上由鼠标按钮按下事件提供的一组指定坐标处遇到该对象的 Sprite (据我所知),则此代码将返回一个对象。下面的代码是否创建了一个对象数组?

var selObj = getObjectByPixel(mx,my);

function getObjectByPixel(x,y) {
gctx.clearRect(0,0,MaxX,MaxY);
//alert(levelData.world['ExtraBlockTNT_1'].name);
for (var objname in levelData.world) {
var obj = levelData.world[objname];
var sprd = spriteData[obj.definition];
if(!sprd) continue;
var tr = transform(obj.x, obj.y, sprd.data.width, sprd.data.height);

gctx.save();
gctx.translate(tr.x,tr.y);
gctx.rotate(obj.angle);

gctx.fillRect(-tr.w/2, -tr.h/2, tr.w, tr.h);
gctx.restore();
//console.info(x,y);
var imageData = gctx.getImageData(x, y, 1, 1);
if (imageData.data[3] > 0) {
return obj;
}
}
return null;
}

在我看来,如果遇到像素数据,循环中的第一个对象将返回。如果是这种情况,循环是否结束(我假设会发生这种情况)或者是否继续返回对象并将它们存储在 selObj

我对这段代码很困惑,但应用程序运行时没有错误,所以我一定没有完全理解它。

谢谢。

最佳答案

它不返回数组。它返回一个对象,请参阅:return obj;。您只能从函数返回一次。

附:如果这段代码的作者要返回一个数组,他可能会调用它:getObjectsByPixel(注意s)。

关于JavaScript 在 for 循环中返回 var,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10724124/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com