在下面的代码(在update方法中调用)中,当数组元素不在屏幕上时,CCPhyscisSprites被删除,并且它们的主体被破坏。我放了一个CCLOG来检查数组计数,当所有精灵不在屏幕上时,我总是得到1。尽管我看不到精灵,但它很可能仍在附近。可能是什么原因,我该如何解决?
-(void)ballScheduler {
if (ballArray != NULL) {
for (int i = 0; i < ballArray.count; i++) {
CCLOG(@"ball array count is %d", ballArray.count);
CCPhysicsSprite* ballPhysicsSprite = [ballArray objectAtIndex:i];
b2Vec2 ballForce = b2Vec2(forceX, forceY);
ballPhysicsSprite.b2Body->ApplyForce(ballForce, ballPhysicsSprite.b2Body->GetWorldCenter());
if (ballPhysicsSprite.position.x < -ballPhysicsSprite.contentSize.width/2) {
ballWorld->DestroyBody(ballPhysicsSprite.b2Body);
ballPhysicsSprite.b2Body = NULL;
[ballArray removeObject:ballPhysicsSprite];
[ballBatchNode removeChild:ballPhysicsSprite];
}
}
}
}
最佳答案
迭代数组时,请勿从数组中删除对象。