-1

现在我有这个:

for (int i = 0; i < level.contentSize.width/level.tileSize.width; i ++){
    tile = [levelLayer tileAt:ccp(i,17)];
    if (CGRectIntersectsRect(ball.boundingBox, tile.boundingBox)) {
        NSLog(@"hit");
    }
}

我需要的是两个变量(现在我有一个 - i),这样我就可以检查所有 x 和 y 值中的所有图块。所以tile = [levelLayer tileAt:ccp(i,j)];<--- 看起来像那样。

4

2 回答 2

3

您可以尝试使用内部 for 循环和另一个循环变量 j 迭代所有可能的值。就像是:

for (int i = 0; i < level.contentSize.width/level.tileSize.width; i ++)
    for (int j = 0; j < level.contentSize.height/level.tileSize.height; j ++){

        tile = [levelLayer tileAt:ccp(i,j)];
        if (CGRectIntersectsRect(ball.boundingBox, tile.boundingBox)) {
            NSLog(@"hit");
        }
}
于 2012-07-20T19:41:12.397 回答
1

使用单独的for循环。

for循环遍历某个范围的值。如果你想遍历两个不同的范围,使用两个 for 循环是一个好主意,因为它清楚地传达了你在做什么。如果循环体超过一两行,您可能希望将其分解为自己的函数或方法,甚至使用您在循环之前定义的块。这样,您可以确定两个循环执行完全相同的任务,只是值的范围不同。

还有其他可能的解决方案来处理多个索引范围。例如,您可以将两个范围都添加到 NSMutableIndexSet 中,然后使用-enumerateIndexesUsingBlock:.

但说真的,只需使用两个for循环。

于 2012-07-20T19:39:38.057 回答