Implementar un lector QR en un motor cocos2d

Hasta ahora estoy usando el motor cocos2d para crear un juego y quiero implementar un lector QR.

Hasta ahora he creado un CCScene, el CCScene tiene un button de menu y lleva a un método onScan:

-(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]; } 

Entiendo que esto funciona en una class ViewController estándar pero me pregunto cómo implementar mejor esto para que funcione con el motor cocos2d en mi CCScene

¡Cualquier ayuda será apreciada, gracias!

Si vienes de un proyecto típico cocos2d-iphone que se creó con la plantilla Xcode, creo que deberías tener una class RootViewController en tu aplicación. La única instancia del RootViewController se crea en applicationDidFinishLaunching: en AppDelegate.m.

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

De alguna manera, puede save una reference global de su UIViewController raíz, por ejemplo, para implementar un método de class en RootViewController:

 static RootViewController *shanetworkingInstance_ = nil; @implementaion RootViewController + (RootViewController *)shanetworkingInstance { if (!shanetworkingInstance_) { shanetworkingInstance_ = [[RootViewController alloc] initWithNibName:nil bundle:nil]; } return shanetworkingInstance_; } 

y cambie la initialization en AppDelegate.m a:

 viewController = [[RootViewController shanetworkingInstance] retain]; 

luego utilízalo para presentar tu UIViewController:

 [[RootViewController shanetworkingInstance] presentModalViewController:reader animated:YES]; 

En cocos2d-iphone, el CCDirector ES el UIViewController.

Entonces, simplemente haz esto:

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