1

スプライト キットに頭を悩ませ始めたところですが、使用している 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 にアクセスできないことにも注意してください。エラーが発生します。

長い投稿で申し訳ありませんが、ここのどこかに問題の原因があることを願っています。

どうもありがとうございました!

4

0 に答える 0