摧毁了一系列CCPhysicsSprites

时间:2013-09-01 13:21:37

标签: arrays cocos2d-iphone box2d box2d-iphone

在下面的代码中,我在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];
         }
      }
   }
}

1 个答案:

答案 0 :(得分:0)

迭代时不要从数组中删除对象。