2013-04-09 54 views
0

在1.0中,我們使用以下代碼將CCDirector OPENGLView設置爲透明。用cocos2.0中的什麼替換openGLView來清除背景顏色?

director.openGLView.backgroundColor = [UIColor clearColor]; 
director.openGLView.opaque = NO; 
glClearColor(0.0, 0.0, 0.0, 0.0); 

在2.0中,我們該怎麼辦?我使用以下,它不起作用,背景顏色仍然是黑色。

director.view.backgroundColor = [UIColor clearColor]; 
director.view.opaque = NO; 
glClearColor(0.0, 0.0, 0.0, 0.0); 

整個代碼如下:本

#import "cocos2d.h" 

#import "AppDelegate.h" 
#import "IntroLayer.h" 
#import "HelloWorldLayer.h" 

@implementation AppController 

@synthesize window=window_, navController=navController_, director=director_; 

- (void) removeStartupFlicker 
{ 
    // 
    // THIS CODE REMOVES THE STARTUP FLICKER 
    // 
    // Uncomment the following code if you Application only supports landscape mode 
    // 
#if GAME_AUTOROTATION == kGameAutorotationUIViewController 

    // CC_ENABLE_DEFAULT_GL_STATES(); 
    // CCDirector *director = [CCDirector sharedDirector]; 
    // CGSize size = [director winSize]; 
    // CCSprite *sprite = [CCSprite spriteWithFile:@"Default.png"]; 
    // sprite.position = ccp(size.width/2, size.height/2); 
    // sprite.rotation = -90; 
    // [sprite visit]; 
    // [[director openGLView] swapBuffers]; 
    // CC_ENABLE_DEFAULT_GL_STATES(); 

#endif // GAME_AUTOROTATION == kGameAutorotationUIViewController 
} 

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    // Create the main window 
    window_ = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 


    // Create an CCGLView with a RGB565 color buffer, and a depth buffer of 0-bits 
    CCGLView *glView = [CCGLView viewWithFrame:[window_ bounds] 
            pixelFormat:kEAGLColorFormatRGB565 //kEAGLColorFormatRGBA8 
            depthFormat:0 //GL_DEPTH_COMPONENT24_OES 
          preserveBackbuffer:NO 
            sharegroup:nil 
           multiSampling:NO 
           numberOfSamples:0];  

    director_ = (CCDirectorIOS*) [CCDirector sharedDirector]; 

    director_.wantsFullScreenLayout = YES;   

    // Display FSP and SPF 
    [director_ setDisplayStats:YES]; 

    // set FPS at 60 
    [director_ setAnimationInterval:1.0/60]; 

    // attach the openglView to the director 
    [director_ setView:glView]; 

    // for rotation and other messages 
    [director_ setDelegate:self]; 

    [window_ addSubview:director_.view]; 


    /* 
    director_.view.backgroundColor = [UIColor clearColor]; 
    director_.view.opaque = NO; 

    glClearColor(0.0, 0.0, 0.0, 0.0); 

    glView.backgroundColor = [UIColor clearColor]; 
    glView.opaque = NO; 


    glClearColor(0.0, 0.0, 0.0, 0.0); 
    */ 

    //[CCDirector sharedDirector].view.backgroundColor = [UIColor clearColor]; 
    //[CCDirector sharedDirector].view.opaque = NO; 

    [[CCDirector sharedDirector] view].opaque = NO; 
    [[CCDirector sharedDirector] view].backgroundColor = [UIColor clearColor]; 
    [director_ view].backgroundColor = [UIColor clearColor]; 
    [director_ view].opaque = NO; 

    glClearColor(0.0, 0.0, 0.0, 0.0); 


    cameraView = [[UIView alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 
    cameraView.opaque = NO; 
    cameraView.backgroundColor = [UIColor clearColor]; 
    [window_ addSubview:cameraView]; 

    UIImagePickerController *imagePicker; 

    @try 
    { 
     imagePicker = [[[UIImagePickerController alloc] init] autorelease]; 
     imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera; 
     imagePicker.showsCameraControls = NO; 
     imagePicker.toolbarHidden = YES; 
     imagePicker.navigationBarHidden = YES; 
     imagePicker.wantsFullScreenLayout = YES; 
     imagePicker.cameraViewTransform = CGAffineTransformScale(imagePicker.cameraViewTransform, 1.0, 1.3); 
    } 
    @catch (NSException *exception) 
    { 
     [imagePicker release]; 
     imagePicker = nil; 
    } 
    @finally 
    { 
     if(imagePicker) 
     { 
      [cameraView addSubview:[imagePicker view]]; 
      [cameraView release]; 
     } 
    } 

    [window_ bringSubviewToFront:director_.view]; 

    // 2D projection 
    [director_ setProjection:kCCDirectorProjection2D]; 
// [director setProjection:kCCDirectorProjection3D]; 

    // Enables High Res mode (Retina Display) on iPhone 4 and maintains low res on all other devices 
    if(! [director_ enableRetinaDisplay:YES]) 
     CCLOG(@"Retina Display Not supported"); 

    // Default texture format for PNG/BMP/TIFF/JPEG/GIF images 
    // It can be RGBA8888, RGBA4444, RGB5_A1, RGB565 
    // You can change anytime. 
    [CCTexture2D setDefaultAlphaPixelFormat:kCCTexture2DPixelFormat_RGBA8888]; 

    // If the 1st suffix is not found and if fallback is enabled then fallback suffixes are going to searched. If none is found, it will try with the name without suffix. 
    // On iPad HD : "-ipadhd", "-ipad", "-hd" 
    // On iPad  : "-ipad", "-hd" 
    // On iPhone HD: "-hd" 
    CCFileUtils *sharedFileUtils = [CCFileUtils sharedFileUtils]; 
    [sharedFileUtils setEnableFallbackSuffixes:NO];    // Default: NO. No fallback suffixes are going to be used 
    [sharedFileUtils setiPhoneRetinaDisplaySuffix:@"-hd"];  // Default on iPhone RetinaDisplay is "-hd" 
    [sharedFileUtils setiPadSuffix:@"-ipad"];     // Default on iPad is "ipad" 
    [sharedFileUtils setiPadRetinaDisplaySuffix:@"-ipadhd"]; // Default on iPad RetinaDisplay is "-ipadhd" 

    // Assume that PVR images have premultiplied alpha 
    [CCTexture2D PVRImagesHavePremultipliedAlpha:YES]; 

    // and add the scene to the stack. The director will run it automatically when the view is displayed. 
    [director_ pushScene: [IntroLayer scene]]; 


    // Create a Navigation Controller with the Director 

    /* 
    navController_ = [[UINavigationController alloc] initWithRootViewController:director_]; 
    navController_.navigationBarHidden = YES; 
    */ 

    // set the Navigation Controller as the root view controller 
// [window_ addSubview:navController_.view]; // Generates flicker. 
    //[window_ setRootViewController:navController_]; 

    // make main window visible 
    [window_ makeKeyAndVisible];  

    return YES; 
} 

// Supported orientations: Landscape. Customize it for your own needs 
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
{ 
    return UIInterfaceOrientationIsLandscape(interfaceOrientation); 
} 


// getting a call, pause the game 
-(void) applicationWillResignActive:(UIApplication *)application 
{ 
    if([navController_ visibleViewController] == director_) 
     [director_ pause]; 
} 

// call got rejected 
-(void) applicationDidBecomeActive:(UIApplication *)application 
{ 
    if([navController_ visibleViewController] == director_) 
     [director_ resume]; 
} 

-(void) applicationDidEnterBackground:(UIApplication*)application 
{ 
    if([navController_ visibleViewController] == director_) 
     [director_ stopAnimation]; 
} 

-(void) applicationWillEnterForeground:(UIApplication*)application 
{ 
    if([navController_ visibleViewController] == director_) 
     [director_ startAnimation]; 
} 

// application will be killed 
- (void)applicationWillTerminate:(UIApplication *)application 
{ 
    CC_DIRECTOR_END(); 
} 

// purge memory 
- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application 
{ 
    [[CCDirector sharedDirector] purgeCachedData]; 
} 

// next delta time will be zero 
-(void) applicationSignificantTimeChange:(UIApplication *)application 
{ 
    [[CCDirector sharedDirector] setNextDeltaTimeZero:YES]; 
} 

- (void) dealloc 
{ 
    [window_ release]; 
    [navController_ release]; 

    [super dealloc]; 
} 
@end 
+0

你在尋找'glClearColor(1,1,1,1)'參數是RGB/Alpha之間0-1? – Clev3r 2013-04-10 02:00:44

+0

glClearColor(1,1,1,1)不起作用,我的意思是清除背景顏色,而不是將背景顏色設置爲白色。 – max 2013-04-10 12:48:03

回答

0

調試了幾天,不知道爲什麼。 返回使用框架v1,沒有這個問題,