Sprite Kit中具有多个精灵的for循环的奇怪行为

时间:2014-03-09 19:32:17

标签: iphone objective-c for-loop ios7 sprite-kit

我在游戏中产生12个精灵。每个精灵都需要有一个原始名称。我是通过使用for循环来做到这一点的。我已经将循环拆分以显示正在发生的事情。所以对于前几个指控:

for (int i = -4; i <= 0; i++)
    {
        NSLog(@"i = %i", i);
        [self spawnChargesWithNumber:i];
    }

NSLog告诉我,我是-4,-3,-2,-1,0。应该如此。这会调用方法spawnChargesWithNumber:i,如下所示:

- (void)spawnChargesWithNumber:(int)number
{
NSLog(@"number is %i", number);

_chargedBall = [[ChargedBall alloc] initWithImageNamed:[NSString stringWithFormat:@"ChargedBall%i", number]];

//code to make a random position

_chargedBall.position = CGPointMake(actualX, random);
_chargedBall.name = [NSString stringWithFormat:@"chargeNumber%i", number];
_chargedBall.zPosition = 15;
_chargedBall.physicsBody = [SKPhysicsBody bodyWithCircleOfRadius:13.0f];
_chargedBall.physicsBody.dynamic = YES;
_chargedBall.physicsBody.affectedByGravity = NO;
_chargedBall.physicsBody.mass = 0.1;
_chargedBall.velocity = CGPointMake(actualVelocityX, 0.0);
_chargedBall.physicsBody.categoryBitMask = chargeCategory;
_chargedBall.physicsBody.contactTestBitMask = playerCategory;
_chargedBall.physicsBody.collisionBitMask = playerCategory | selfCategory;
[self.map addChild:_chargedBall];

NSLog(@"You made charge with name %@", _chargedBall.name);

if (!_enemies) {
    _enemies = [[NSMutableArray alloc] init];
}

[_enemies addObject:_chargedBall];
NSLog(@"you added %@ to the array", _chargedBall.name);
}

我有一个名为ChargedBall的对象。 NSLog首先告诉我数字,它对应于上面的i。然后它告诉我我充电(chargeNumberi)它遵循相同的模式。然后我将chargedBall添加到数组中。在游戏过程中,如果我与其中任何一个发生碰撞,我的NSLog didBeginContact方法告诉我,我已经联系了正确的费用。一切都在按计划进行。

因为我实际上有12次收费而不是5次,所以我有另一个for循环来向您展示。在另一个结束的地方起飞基本相同:

for (int i = 1; i <= 7; i++)
    {
        NSLog(@"i = %i", i);
        [self spawnChargesWithNumber:i];
    }

我原本确实有这些,但我想告诉你发生了什么。致电spawnChargesWithNumber:i后,我收到了其他费用。但是,它们是相反的!我不明白。 NSLog仍告诉我i,您创建的chargeNumberi号码,并将其添加到数组中。我甚至NSLog图像的名称,它仍然对应。但chargeNumber7显示图片1,chargeNumber6显示图片2,chargeNumber 5显示图片3,其中四个很好,因为要制作奇数个精灵,chargeNumber3显示图片5 ,chargeNumber2显示图片6,chargeNumber 7显示图片1.所以整个事情都被翻转了。我检查了图片,他们都是正确的。这甚至发生在我将for循环仅作为一个循环,正电荷被切换,但不是零到负4.有人知道为什么会发生这种情况吗?我NSLog我能想到的一切,我甚至改变了图片名称,但没有任何效果。如果您需要更多来自我可以发布的其他地方的代码,我现在很困惑!

1 个答案:

答案 0 :(得分:0)

问题已经解决了。我真的以为我错误地编程了我的for循环。然而,在fuzzygoat和prototypical的帮助下,我对所有内容进行了硬编码,并使用调试器发现所有内容都符合我的意图。因此,原型建议清理派生数据,因为我在导入Xcode后更改了图像名称。我认为清洁产品与删除衍生数据一样,但也许不是。所以感谢所有看起来并感谢所有帮助的人。你再次充满了知识!