2010-10-03 16 views
4

Bien que je sache utiliser le Reconnaissance des Gestes dans une application basée sur la vue, mais lorsque j'applique les mêmes idées dans une application OpenGLSE: par exemple, j'ajoute un TapGestureRecognizer, et quand j'appuie sur le EAGLView, des accidents. Donc, quelqu'un peut-il me montrer une utilisation standard de UITapGestureRecognizer dans une application basée sur OpenGLES?Comment utiliser le reconnaissance de geste dans une application OpenGLES de l'iPhone?

meilleurs voeux.

+0

Je n'ai pas eu une expérience directe avec cela, mais avez-vous essayé d'ajouter à la vue parent (comme la fenêtre par exemple) à la place? Vous ne savez pas pourquoi, mais cela pourrait nécessiter des fonctionnalités de couche qui ne sont pas implémentées dans la classe CAEAGLLayer. – jhabbott

+0

Ceci est très étrange, car OpenGL ES héberge des vues répondant aux événements tactiles normaux sans incident. Pourquoi un détecteur de mouvement se comporte-t-il différemment? –

+1

J'ai utilisé des reconnaisseurs de gestes pour les UIViews de base et les EAGLViews et ils fonctionnent exactement de la même manière. Vous avez probablement un problème ailleurs. Que dit votre journal de bord? –

Répondre

4

Voici quelques exemples de code d'un de mes jeux opengles avec prise en charge des gestes. (Ne pas planter et espère que cela aide)

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    CGRect rect = [[UIScreen mainScreen] bounds]; 
    rect.size.height = 320; 
    rect.size.width = 480; 
    rect.origin.x = 0; 
    rect.origin.y = 0; 

    glView = [[EAGLView alloc] initWithFrame:rect pixelFormat:GL_RGB565_OES depthFormat:GL_DEPTH_COMPONENT16_OES preserveBackbuffer:NO]; 
    [self.view addSubview: glView]; 

    [glView addSubview: minimapView]; 

    if(!shell->InitApplication()) 
     printf("InitApplication error\n"); 

    [NSTimer scheduledTimerWithTimeInterval:(1.0/kFPS) target:self selector:@selector(update) userInfo:nil repeats:YES]; 

    UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(Panned:)]; 
    [glView addGestureRecognizer:[pan autorelease]];  

    UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(Tapped:)]; 
    [glView addGestureRecognizer:[tap autorelease]];  

    UITapGestureRecognizer *dbltap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(DoubleTapped:)]; 
    [dbltap setNumberOfTapsRequired:2]; 
    [glView addGestureRecognizer:[dbltap autorelease]]; 

    UILongPressGestureRecognizer *longpress = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(LongPressed:)]; 
    [glView addGestureRecognizer:[longpress autorelease]];  
} 

Et la fonction sélecteur

- (void) LongPressed:(UILongPressGestureRecognizer*)sender{ 
    NSLog(@"Long Pressed"); 
}