对于Sprite Kit中的循环似乎是在清空一个数组?

时间:2013-11-06 14:05:14

标签: objective-c sprite-kit

我刚刚开始将我的大脑包裹在Sprite Kit中,并且在尝试使用for 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。给我一个错误。

对不起,很长的帖子,但希望在这里的某个地方是我的问题的原因。

非常感谢你们!

0 个答案:

没有答案