无法获得精灵位置

时间:2012-02-02 19:33:22

标签: cocos2d-iphone box2d

我的代码中有一些东西,我已经做了很多次,但现在我不能!

for (b2Body* bo = world->GetBodyList(); bo; bo = bo->GetNext()) 
    {


      CCSprite *tempSprite = (CCSprite *) bo->GetUserData();
        NSLog(@"%f",tempSprite.position.x); //crashes in this line.

我正在计算我世界上的尸体,我可以看到我有22个,但每次我尝试做某事:tempSprite.position.x它会崩溃!

我也可以打印出来:

 if(tempSprite != NULL)
            NSLog(@"YES");

为什么我不能获得这个职位? 我的世界工作得很好;联络听众做得很好;无法理解。

任何帮助?

1 个答案:

答案 0 :(得分:0)

解决但不清楚为什么

我做了

        [badBondSheet1 removeChild:actora cleanup:YES];
        [self removeChild:actorb cleanup:YES];
        [self shiftEnemies:touchPointA]; // calls the code that i have posted 

当shiftEnemies是我发布的函数 - 它在所有实体上运行。

我更正了:

       [self shiftEnemies:touchPointA];
    [badBondSheet1 removeChild:actora cleanup:YES];
    [self removeChild:actorb cleanup:YES];

它有效。

那是因为我跑过我的身体,其中一些没有用户数据,因为我已经清理了精灵!

所以你必须摧毁身体并清理精灵然后越过你的身体。 结论:不要清理你的弹簧,并且在你彻底摧毁你的身体的同时做一些事情!

听起来合理吗?