在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];