0

我在 Sprite 类中创建了一个方法,它更新 CCPhysicsSprite 主体的位置,直到它到达某个位置。下面的代码:

-(void)updatePhyscisSprite    {

if (phySpr.b2Body->GetPosition().y < 200.0/PTM_RATIO) {

    b2Vec2 force = b2Vec2(0.0, 12.0*phySpr.b2Body->GetMass());
    phySpr.b2Body->ApplyForce(force, phySpr.b2Body->GetWorldCenter());
    }
if (phySpr.b2Body->GetPosition().y > 200.0/PTM_RATIO) {
    bWorld->DestroyBody(phySpr.b2Body);
    phySpr.b2Body = NULL;
    [bLayer removeChild:phySpr];

}
}

我不断收到 EXC_BAD_ACCESS 错误:

if (phySpr.b2Body != NULL) { // EXC_BAD_ACCESS ERROR

我有一种感觉,当 body 为 NULL 时检查 null 会产生问题,因为该方法每 1/60 秒调用一次。我不确定如何解决这个问题。

4

1 回答 1

0

尝试这样做:

在 PhyscisSprite.mm 中

- (void)dealloc
{
    bWorld->DestroyBody(b2Body);
    b2Body = NULL;

    [super dealloc];
}

在你的函数中输入

[bLayer removeChild:phySpr cleanup:YES];
于 2013-05-30T14:44:36.513 回答