スプライト キットに頭を悩ませ始めたところですが、使用している for ループ内のノードのプロパティを変更しようとすると、非常に奇妙なエラーが発生します。
2 つの SKSpriteNode オブジェクトがあります。1 つは SKScene (BLATheBugs) の子で、もう 1 つは最初の (BLAEmptySpaces) の子です。BLAEmptySpaces でレイアウトされたグリッドがあり、UITouch を使用するはずの空きスペースの上に BLATheBugs があり、bool isOccpupied プロパティ == False の場合は空きスペースに移動します。シーンが設定されると、SKScene は TheBugs のメソッドをトリガーします。
-(void) spawnEmptySpacesInitialize
{
[self addChild:[self spawnEmptySpaces]];
}
これにより、次がトリガーされます。
-(BLAEmptySpaces *) spawnEmptySpaces
{
emptySpace = [[BLAEmptySpaces alloc] init];
emptySpace.numberOfEmptySpacesNeeded = 12;
[emptySpace spawnEmptySpaces];
[emptySpace positionTheEmptySpaces];
return emptySpace;
}
最後に、EmptySpaces オブジェクトのメソッドをトリガーします。
-(BLAEmptySpaces *) spawnEmptySpaces
{
_emptySpacesArray = [NSMutableArray new];
for (int x = 0; x < _numberOfEmptySpacesNeeded; x++)
{
_anEmptySpace = [[BLAEmptySpaces alloc] initWithImageNamed:@"BlueLight.png"];
_anEmptySpace.zPosition = 50;
[_emptySpacesArray addObject:_anEmptySpace];
[self addChild: _anEmptySpace];
}
return self;
}
すべて問題ないように見えますが (EmptySpaces オブジェクトに追加の「addChild」を追加して画面に描画する必要があることを除いて、これも修正しようとしています)、メソッドを呼び出して TheBugs を移動すると:
-(void) moveLeftOneSpace
{
NSLog(@"%d", emptySpace.emptySpacesArray.count);
for (emptySpace in emptySpace.emptySpacesArray)
{
NSLog(@"cycle");
if (emptySpace.isOccupied == NO)
{
for (_yellowBug in yellowBugArray)
{
if (_positionOfFingerTouchX > _yellowBug.position.x - variableOne && _positionOfFingerTouchX < _yellowBug.position.x + variableTwo && _positionOfFingerTouchY > _yellowBug.position.y - variableOne && _positionOfFingerTouchY < _yellowBug.position.y + variableTwo && emptySpace.position.x == _yellowBug.position.x - 80 && emptySpace.position.y == _yellowBug.position.y)
{
_yellowBug.position = CGPointMake(_yellowBug.position.x - spaceBetweenBugs, _yellowBug.position.y);
emptySpace.isOccupied = YES;
NSLog(@"execute");
}
}
}
}
}
最初に、配列に 12 個のオブジェクトがあることがわかり、操作が実行されます。ピースをもう一度動かそうとすると、配列にオブジェクトがなくなったことがわかります (yellowBugArray)。また、emptySpace.anEmptySpace にアクセスできないことにも注意してください。エラーが発生します。
長い投稿で申し訳ありませんが、ここのどこかに問題の原因があることを願っています。
どうもありがとうございました!