在cocos2d引擎中实现QR阅读器

时间:2011-08-08 03:10:22

标签: iphone ios cocos2d-iphone qr-code

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

到目前为止,我已经创建了一个CCScene,CCScene有一个菜单按钮,它导致了一个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引擎

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

3 个答案:

答案 0 :(得分: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];

答案 1 :(得分:0)

在cocos2d-iphone中,CCDirector是UIViewController。

所以,就这样做:

[[CCDirector sharedDirector] presentModalViewController:reader animated:YES]

答案 2 :(得分:0)

UIView* glView = [CCDirector sharedDirector].view;
UIView* window = glView.superview;

[window addSubview:reader.view];