Cocos2D - 图层背景颜色不变

时间:2013-03-17 18:36:40

标签: iphone ios objective-c ipad cocos2d-iphone

我想在我的一个视图中集成cocos2d。所以,我有一个普通的视图控制器(MapEditorViewController)和一个视图,在我的视图控制器中,(我创建了一个IBOutlet UIView *openGLView)我希望cocos2d在其中。在我的视图控制器中,我有方法setupCocos2D:

- (void)setupCocos2D {
    CCGLView *glView = [CCGLView viewWithFrame:self.openGLView.bounds
                                   pixelFormat:kEAGLColorFormatRGB565   // kEAGLColorFormatRGBA8
                                   depthFormat:0                        // GL_DEPTH_COMPONENT16_OES
                        ];
    glView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
    [self.openGLView insertSubview:glView atIndex:0];
    [[CCDirector sharedDirector] setOpenGLView:glView];
    CCScene *scene = [HelloWorldLayer scene];
    [[CCDirector sharedDirector] runWithScene:scene];
}

setupCocos2D在类viewDidLoad的{​​{1}}中调用。

我有一个图层(MapEditorViewController),它基本上是http://www.raywenderlich.com/25736/how-to-make-a-simple-iphone-game-with-cocos2d-2-x-tutorial

教程中的代码
HelloWorldLayer

现在,我不知道我做错了什么,即使我更改// Helper class method that creates a Scene with the HelloWorldLayer as the only child. +(CCScene *) scene { // 'scene' is an autorelease object. CCScene *scene = [CCScene node]; // 'layer' is an autorelease object. HelloWorldLayer *layer = [HelloWorldLayer node]; // add layer as a child to scene [scene addChild: layer]; // return the scene return scene; } - (void) addMonster { CCSprite * monster = [CCSprite spriteWithFile:@"backbutton.png"]; // Determine where to spawn the monster along the Y axis CGSize winSize = [CCDirector sharedDirector].winSize; int minY = monster.contentSize.height / 2; int maxY = winSize.height - monster.contentSize.height/2; int rangeY = maxY - minY; int actualY = (arc4random() % rangeY) + minY; // Create the monster slightly off-screen along the right edge, // and along a random position along the Y axis as calculated above monster.position = ccp(winSize.width + monster.contentSize.width/2, actualY); [self addChild:monster]; // Determine speed of the monster int minDuration = 2.0; int maxDuration = 4.0; int rangeDuration = maxDuration - minDuration; int actualDuration = (arc4random() % rangeDuration) + minDuration; // Create the actions CCMoveTo * actionMove = [CCMoveTo actionWithDuration:actualDuration position:ccp(-monster.contentSize.width/2, actualY)]; CCCallBlockN * actionMoveDone = [CCCallBlockN actionWithBlock:^(CCNode *node) { [node removeFromParentAndCleanup:YES]; }]; [monster runAction:[CCSequence actions:actionMove, actionMoveDone, nil]]; } // on "init" you need to initialize your instance -(id) init { // always call "super" init // Apple recommends to re-assign "self" with the "super's" return value if( (self=[super initWithColor:ccc4(255,0,255,255)]) ) { CGSize winSize = [CCDirector sharedDirector].winSize; CCSprite *player = [CCSprite spriteWithFile:@"carteIntrouvable.png"]; player.position = ccp(player.contentSize.width/2, winSize.height/2); [self addChild:player]; [self setIsTouchEnabled:YES]; [self schedule:@selector(gameLogic:) interval:1.0]; } return self; } -(void)gameLogic:(ccTime)dt { [self addMonster]; } 中的行initWithColor,图层也会显示黑色

如何更改图层的背景颜色,因为如果我没有将cocos2d与UIKit集成,代码可以工作......

1 个答案:

答案 0 :(得分:6)

替代解决方案:将CCLayerColor添加到基础层。

-(void) onEnter
{
    [super onEnter];
    ccColor4B color = {255,255,0,255};
    CCLayerColor *colorLayer = [CCLayerColor layerWithColor:color];
    [self addChild:colorLayer z:LAST_LAYER_PLUS_1];
}