2011-11-04 3 views
0

je lisais un tutoriel sur le site Web de rayons Wenderlich et j'ai trouvé cette boucle:BOX2D boucle étrange (c-objectif, cocos2d, box2d)

for(b2Body *b = _world->GetBodyList(); b; b=b->GetNext()) { 

alors voici, b est écrasé? Je trouve cela un peu étrange

et est le code ici:

for(b2Body *b = _world->GetBodyList(); b; b=b->GetNext()) {  
     if (b->GetUserData() != NULL) { 
      CCSprite *ballData = (CCSprite *)b->GetUserData(); 
      ballData.position = ccp(b->GetPosition().x * PTM_RATIO, 
            b->GetPosition().y * PTM_RATIO); 
      ballData.rotation = -1 * CC_RADIANS_TO_DEGREES(b->GetAngle()); 
     }   
    } 

grâce

Répondre

3

Oui, b est remplacé. Mais b est juste un pointeur dans une liste chaînée d'objets b2Body. Le but de b est de pointer chaque b2Body dans la liste, un à la fois.

+0

merci rob, d'accord, si nous comparons cela à 'pour (var i = 0; i Paul

+0

Il vérifie le pointeur nul qui termine la liste. Consultez cet article sur les listes liées: http://cslibrary.stanford.edu/103/LinkedListBasics.pdf –

+0

bien merci pour la réponse rapide! – Paul