2011-08-08 90 views
3

到目前为止,我正在使用cocos2d引擎来创建游戏,并且我想实现QR阅读器。在cocos2d引擎中实现QR阅读器

到目前为止,我已经创建了一个CCScene,该CCScene有一个菜单按钮,它会导致一个开启扫描方法:

-(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引擎

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

回答

0

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

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

在cocos2d-iphone中,CCDirector是UIViewController。

所以,只要做到这一点:

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

[window addSubview:reader.view]; 
+0

什么将一个与此代码吗? –

+0

而不是只发布一段代码,请*解释*为什么这段代码解决了问题。没有解释,这不是一个答案。 –

+0

该代码在屏幕上放置视图,非常明显而且不需要解释 –