miércoles, 3 de agosto de 2011

Multiples "dedos" o "toques" o "touches"

Hoy voy a mostrar un simple ejemplo de como detectar cuantos dedos hay en la pantalla. Es un poco más "complejo" que obtener información del sensor del acelerómetro, pero sigue siendo sencillo para todos.

Comenzando desde un proyecto nuevo en COCOS2D y eliminando el contenido del hello world (como ya hicimos en el tutoria acelerómetro) tenemos que añadir las siguientes líneas de código:



// on "init" you need to initialize your instance
-(id) init
{
 // always call "super" init
 // Apple recommends to re-assign "self" with the "super" return value
 if( (self=[super init])) {  
  //Habilitamos la pantalla táctil
        self.isTouchEnabled = YES;   
        
        //Creamos un label para mostrar información
        etiqueta = [CCLabelTTF labelWithString:@"No se detecta ningún dedo" fontName:@"Papyrus" fontSize:34];
        etiqueta.position = ccp(240,160);
        [self addChild:etiqueta];
 }
 return self;
}

-(void)ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
}

-(void)ccTouchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
}

-(void)ccTouchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
}

Con esto hemos creado la etiqueta (label) que nos indicará cuantos dedos tenemos en la pantalla, y además hemos habilitado la pantalla para "poder tocarla" y reconocer los "toques". Justo después he creado los 3 procedimientos necesarios (deben tener el mismo nombre que yo os pongo). Como el nombre indica, cada uno es lanzado cuando se produce un inicio, un movimiento, y un fin en cada detección.

Por otro lado, queremos que detecte MULTIPLES dedos, por lo que debemos ir nuestro AppDelegate.m y añadir la siguiente linea, justo después de inicializar el glview

<[glView setMultipleTouchEnabled:YES];
Por último sólo queda "rellenar" los procedimientos de ccTouches:
-(void)actualizaEtiquetaConTexto:(NSString *) txt Dedos:(int) dedos{
    [etiqueta setString:[NSString stringWithFormat:@"%d dedo(s) detectado(s): %@",dedos, txt]];
}

-(void)ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    [self actualizaEtiquetaConTexto:@"Inicio" Dedos:[touches count]];
}

-(void)ccTouchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
    [self actualizaEtiquetaConTexto:@"Movimiento" Dedos:[touches count]];
}

-(void)ccTouchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
    [self actualizaEtiquetaConTexto:@"Fin" Dedos:[touches count]];
}

Y eso es todo por hoy, otro tutorial simple. Poco a poco iré profundizando e incluso haré un pequeño juego

No hay comentarios:

Publicar un comentario