2011-08-08 41 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

該代碼在屏幕上放置視圖,非常明顯而且不需要解釋 –