我正在使用一个数组跟踪我游戏中的所有图块,并在触摸时调用此函数 - (void)moveTilesDown,它应该遍历所有图块并找到有空格的地方,然后将瓷砖上方的瓷砖向下移动一个位置。在第一次触摸时,一切正常,它会向下移动相应的图块,但在连续触摸时,它会向下移动整个屏幕,包括2个与阵列无关的SKLabelNodes,不应以任何方式受到影响。我不知道我是以某种方式向下移动整个屏幕还是单独移动每个节点。如果问题有些不清楚,我道歉,但我完全不知道发生了什么,因此真的不知道如何提出问题。任何帮助都会非常感激。
这是我的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];
}
}
}
}