2011-11-02 4 views
0

J'écris un jeu pour l'iPhone/iPod Touch (en utilisant Cocos2d) et je l'ai remarqué quelque chose d'étrange ...écran des systèmes de coordonnées pour ARMv6, ARMv7 (développement iPhone)

J'ai besoin de détecter les parties de l'écran que le joueur touche afin d'effectuer certaines actions.

Par exemple:

-(void)ccTouchEnded:(UITouch *)touch withEvent:(UIEvent *)event { 
CGPoint touchLocation = [touch locationInView:[touch view]];  
//DEBUG 
CCLOG(@"Button pressed: X Location: %f",touchLocation.x); 
CCLOG(@"Button pressed: Y Location: %f",touchLocation.y); 

... Et quand touchLocation.x et touchLocation.y sont à la fois dans une certaine plage, je fais quelque chose.

Il a travaillé sur le simulateur bien. Quand je l'ai compilé pour mon appareil de test, en utilisant l'architecture armv7 (optimisée), cela a également fonctionné. Mais quand je l'ai compilé avec armv6, les architectures armv7 activées (ce qui est nécessaire pour l'app store), j'ai remarqué que le code ne fonctionnait plus. Les CCLOGs m'ont montré que le système de coordonnées X, Y utilisé quand j'ai compilé pour armv6, armv7 était DIFFERENT à celui utilisé quand je compilé seulement pour armv7 (optimisé).

Comment puis-je contourner ce problème? Est-ce la seule façon d'utiliser le système de coordonnées utilisé par armv6, armv7 lors des tests sur l'appareil ... (cela ne fonctionne pas sur le simulateur)? Il est impossible de télécharger une application pour iPhone et de la compiler uniquement pour armv7 (optimisé). :(

Répondre

5

Pour trouver des touches à l'écran dans cocos2d, essayez ce code. Son fonctionne correctement dans mon application jeu

- (void)ccTouchesBegan:(NSSet*)touches withEvent:(UIEvent*)event { 
    UITouch *myTouch = [touches anyObject]; 
    CGPoint location = [myTouch locationInView:[myTouch view]]; 
    location = [[CCDirector sharedDirector] convertToGL:location]; 
} 
+0

Merci! Conversion de GL a résolu tous mes problèmes. – artemis

Questions connexes