我在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秒调用一次方法。我不确定如何解决这个问题。
答案 0 :(得分:0)
尝试这样做:
在PhyscisSprite.mm
中- (void)dealloc
{
bWorld->DestroyBody(b2Body);
b2Body = NULL;
[super dealloc];
}
并在您的函数中输入
[bLayer removeChild:phySpr cleanup:YES];