我正在使用一个数组来跟踪我的游戏中的所有图块,并在触摸时调用此函数 -(void)moveTilesDown 它应该循环遍历所有图块并找到有空白区域的位置,然后移动图块在它之上下降一个点。在第一次触摸时一切正常,它会向下移动适当的图块,但在连续触摸时,它会向下移动整个屏幕,包括 2 个与数组无关的 SKLabelNode,不应受到任何影响。我不知道我是否以某种方式向下移动整个屏幕或单独移动每个节点。如果问题有些不清楚,我深表歉意,但我完全不知道发生了什么,因此真的不知道如何提出这个问题。任何帮助将不胜感激。
这是我的 moveTilesDown 代码:
-(void)moveTilesDown {
int i = 0;
for (i = 0; i < 162; i++) {
if (i % 9 == 0) {
NSLog(@"skipping tile %d b/c it's on bottom", i);
}else {
if ([[idArray objectAtIndex:(i - 1)] isEqualToString:@"none"] && ![[idArray objectAtIndex:i] isEqualToString:@"none"]) {
[idArray replaceObjectAtIndex:(i - 1) withObject:[idArray objectAtIndex:i]];
[idArray replaceObjectAtIndex:i withObject:[NSString stringWithFormat:@"none"]];
tileWasMoved = YES;
CGPoint locationOfIndex = CGPointMake((i % 9) * 30, (i / 9) * 30);
SKNode *movingNode = [self nodeAtPoint:locationOfIndex];
SKAction *moveNodeDown = [SKAction moveByX:-kTileSize.width y:0.0 duration:1.0];
[movingNode runAction: moveNodeDown];
}
}
}
}