2011-08-08 2 views
3

Jusqu'à présent, j'utilise le moteur cocos2d pour créer un jeu et je souhaite implémenter un lecteur QR.Implémentation d'un lecteur QR dans un moteur cocos2d

Jusqu'à présent, j'ai créé un CCScene, le CCScene a un bouton de menu et il conduit à une onScan Méthode:

-(void) onScan:(id)sender{ 
    // ADD: present a barcode reader that scans from the camera feed 
    ZBarReaderViewController *reader = [ZBarReaderViewController new]; 
    reader.readerDelegate = self; 

    ZBarImageScanner *scanner = reader.scanner; 
    // TODO: (optional) additional reader configuration here 

    // EXAMPLE: disable rarely used I2/5 to improve performance 
    [scanner setSymbology: ZBAR_I25 
        config: ZBAR_CFG_ENABLE 
         to: 0]; 

    // present and release the controller 
    [self presentModalViewController: reader 
          animated: YES]; 
    [reader release]; 
} 

Je comprends que cela fonctionne sur une classe standard ViewController mais je me demande comment mieux implémenter cela pour travailler avec le moteur cocos2d sur mon CCScene

Toute aide serait appréciée Merci!

Répondre

0

Si vous venez d'un projet cocos2d-iphone typique qui a été créé en utilisant le template Xcode, je pense que vous devriez avoir une classe RootViewController dans votre application. La seule instance de RootViewController est créée dans applicationDidFinishLaunching: dans AppDelegate.m.

viewController = [[RootViewController alloc] initWithNibName:nil bundle:nil]; 

Vous pouvez en quelque sorte sauver une référence globale de votre UIViewController racine, par exemple, pour mettre en œuvre une méthode de classe en RootViewController:

static RootViewController *sharedInstance_ = nil; 

@implementaion RootViewController 

+ (RootViewController *)sharedInstance { 
    if (!sharedInstance_) { 
     sharedInstance_ = [[RootViewController alloc] initWithNibName:nil bundle:nil]; 
    } 
    return sharedInstance_; 
} 

et changer l'initialisation en AppDelegate.m à:

viewController = [[RootViewController sharedInstance] retain]; 

utiliser ensuite pour présenter votre UIViewController:

[[RootViewController sharedInstance] presentModalViewController:reader 
            animated:YES]; 
0

Dans cocos2d-iphone, le CCDirector est le UIViewController.

Alors, faites ceci:

[[CCDirector sharedDirector] presentModalViewController:reader animated:YES] 
0
UIView* glView = [CCDirector sharedDirector].view; 
UIView* window = glView.superview; 

[window addSubview:reader.view]; 
+0

Et que peut-on faire avec ce code? –

+0

Plutôt que de publier uniquement un bloc de code, veuillez * expliquer * pourquoi ce code résout le problème posé. Sans explication, ce n'est pas une réponse. –

+0

ce code met la vue à l'écran, il est très évident et n'a pas besoin d'explication –

Questions connexes