Question

Je suis vraiment désolé, je me rends compte qu'il ya eu plusieurs questions posées sur la détection tactile cocos2d (y compris cette réponse qui m'a aidé à un groupe), mais je ne peux pas obtenir l'un d'eux pour travailler. J'ai commenté la réponse que je lié au lieu de demander à ma propre question, mais je n'ai pas assez représentant pour pouvoir commenter.

Tout ce que je veux faire est d'arrêter l'animation dès qu'un utilisateur tape partout sur l'écran.

Voici mon code à ce jour:

- (BOOL)ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    NSLog(@"Touches Began");
    UITouch *touch = [touches anyObject];
    CGPoint location = [touch locationInView: [touch view]];
    location = [[Director sharedDirector] convertCoordinate: location];

    CGRect mySurface = (CGRectMake(100, 100, 320, 480));
    if(CGRectContainsPoint(mySurface, location)) {
        NSLog(@"Event Handled");
        return kEventHandled;
        [[Director sharedDirector] stopAnimation];
       }
     return kEventIgnored;
     NSLog(@"Event Ignored");

}

Je l'ai essayé à la fois BOOL et void, ccTouchesBegan et touchesBegan, dans un fichier de couche et un fichier cocosNode, et bien d'autres choses. Rien ne se passe. Rien ne montre dans le journal, et l'animation continue sur son chemin peu joyeux. Qu'est-ce que je fais mal?

Était-ce utile?

La solution

Le principal problème est que vous avez le [[Director sharedDirector] stopAnimation]; après la return kEventHandled; plutôt que devant elle. return quitte la fonction dès qu'il est appelé, si quoi que ce soit après il ne sera jamais atteint.

Je n'ai pas mon mac devant moi pour vérifier le reste de votre code, mais il semble bien, donc je devine que est le principal problème. Si vous ne voyez pas même le NSLog(@"Touches Began"); alors vous devez vous assurer que vous faites cela dans un CocosNode qui s'étend Layer.

Une autre chose utile (une fois que vous voyez la touche) est la fonction NSStringFromCGPoint, qui vous permet d'afficher facilement et déboguer les valeurs dans un CGPoint, de sorte que vous pouvez faire quelque chose comme:

NSLog(@"This layer was touched at %@", NSStringFromCGPoint(location));
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top