0

我正在使用一个数组来跟踪我的游戏中的所有图块,并在触摸时调用此函数 -(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];
        }
    }
}
}
4

0 回答 0