Pregunta

Lo siento mucho, me doy cuenta de que ha habido varias preguntas acerca de la detección táctil cocos2d (incluyendo esta respuesta que me ayudó un montón), pero simplemente no puede conseguir a cualquiera de ellos para trabajar. Me han comentado sobre la respuesta que he vinculado en lugar de pedir a mi propia pregunta, pero no tengo representante suficiente para dejar comentarios.

Todo lo que quiero hacer es dejar de animación tan pronto como un usuario toca en cualquier lugar de la pantalla.

Aquí está mi código hasta ahora:

- (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");

}

He intentado tanto BOOL y void, ccTouchesBegan y touchesBegan, en un archivo de capa y un archivo cocosNode, y muchas otras cosas. No pasa nada. Nada muestra en el registro, y la animación continúa en su camino alegre poco. ¿Qué estoy haciendo mal?

¿Fue útil?

Solución

El problema principal es que usted tiene el [[Director sharedDirector] stopAnimation]; después de la return kEventHandled; más que antes. return sale de la función tan pronto como se le llama, por lo que nunca conseguir alcanzado nada después de él.

No tengo mi mac frente a mí para comprobar el resto de su código, pero parece muy bien, así que supongo que ese es el problema principal. Si usted no está ni siquiera ver la NSLog(@"Touches Began"); entonces usted necesita para asegurarse de que usted está haciendo esto en un CocosNode que se extiende Layer.

Otra cosa útil (una vez que se está viendo los toques) es la función NSStringFromCGPoint, que le permite visualizar y depurar los valores en una CGPoint con facilidad, por lo que podría hacer algo como:

NSLog(@"This layer was touched at %@", NSStringFromCGPoint(location));
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top