2011-11-04 11 views
7

sto iniziando a imparare cocos2d, e mi chiedevo perché effettivamente usiamo convertToGL da CCDirector, [[CCDirector sharedDirector] convertToGL: touchLoc]; quando abbiamo già il [touch view] da [touch locationInView: [touch view]]; ?cocos2d: perché convertToGL e perché addChild CCSprite prima del suo corpo?

Inoltre, prima "addChild" un CCSprite, contenente un'immagine, e quindi ne impostiamo il corpo, e il ccsprite diventa l'utente di dati di questo corpo. Non sarebbe meglio "addChild" invece il corpo? o è per un particolare scopo?

Grazie

+0

solo una domanda per favore, a meno che l'altra/domanda di followup sia correlata alla domanda principale – LearnCocos2D

+1

seconda parte: suppongo che intenda un corpo di Box2D. Il metodo addChild accetta solo oggetti derivati ​​da CCNode. Non sa come lavorare con la classe b2Body. – LearnCocos2D

+0

@ LearnCocos2D: ok grazie per la risposta rapida! e scusa per la doppia domanda, terrò a mente! – Paul

risposta

12

Questo perché l'OpenGL View (classe EAGLView) utilizza un sistema di coordinate diverso rispetto a Cocoa Touch fa.

Ad esempio, la posizione 0,0 per Cocoa Touch si trova nell'angolo superiore sinistro, mentre la posizione 0,0 per OpenGL si trova nell'angolo in basso a sinistra. Ecco perché è necessario "convertire in GL" tutte le coordinate di UIView.

La conversione tiene conto anche dell'orientamento del dispositivo corrente.

+0

grazie, va bene ha senso! Saluti – Paul