1

我刚刚开始围绕 Sprite Kit 进行思考,当我尝试在我使用的 for 循环中更改节点的属性时遇到了一个非常奇怪的错误。

我有两个 SKSpriteNode 对象,一个是 SKScene (BLATheBugs) 的子对象,另一个是第一个 (BLAEmptySpaces) 的子对象。我用 BLAEmptySpaces 和 BLATheBugs 布置了一个网格,这些空间位于应该采用 UITouch 的那些空白空间之上,如果它的 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