ゲーム内のすべてのタイルを追跡するために配列を使用しています。タッチでこの関数を呼び出します -(void)moveTilesDown これは、すべてのタイルをループして空きスペースがある場所を見つけ、タイルを移動することになっていますその上に 1 箇所下に移動します。最初のタッチではすべてが正常に機能し、適切なタイルが下に移動しますが、連続してタッチすると、配列とは関係がなく、影響を受けない 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];
}
}
}
}