在cocos2d引擎中实现一个QR阅读器

到目前为止,我正在使用cocos2d引擎来创build一个游戏,我想实现一个QR阅读器。

到目前为止,我已经创build了一个CCScene,CCScene有一个菜单button,它导致了一个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]; } 

我明白,这对一个标准的ViewController类的作品,但我想知道如何最好地实现这个与我的CCScene上的cocos2d引擎

任何帮助将不胜感激谢谢!

如果你来自使用Xcode模板创build的典型的cocos2d-iphone项目,我想你应该在你的应用程序中有一个RootViewController类。 RootViewController的唯一实例是在applicationDidFinishLaunching:AppDelegate.m中创build的。

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

你可以以某种方式保存你的根UIViewController的全局引用,例如,在RootViewController中实现一个类方法:

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

并将AppDelegate.m中的初始化更改为:

 viewController = [[RootViewController sharedInstance] retain]; 

然后用它来呈现你的UIViewController:

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

在cocos2d-iphone中,CCDirector是UIViewController。

所以,只要做到这一点:

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