Iphone CCLayerColor未按预期工作

Iphone CCLayerColor未按预期工作,iphone,objective-c,ios,cocos2d-iphone,Iphone,Objective C,Ios,Cocos2d Iphone,我尝试添加一个层,其全部目的是用白色填充整个场景 我试着按如下方式做: // Inside a cass which extends CCScene - (id)init { if (self = [super init]) { // Create the flash layer on level restart _flashLayer = [[CCLayerColor alloc] init]; [

我尝试添加一个层,其全部目的是用白色填充整个场景

我试着按如下方式做:

// Inside a cass which extends CCScene
- (id)init {
    if (self = [super init]) {                    
        // Create the flash layer on level restart
        _flashLayer = [[CCLayerColor alloc] init];
        [_flashLayer setColor:ccc3(255, 255, 255)];
        [self addChild:_flashLayer z:0];
        [_flashLayer release];        
    }

    return self;
}
 _flashLayer = [[CCLayerColor alloc] initWithColor:ccc4(255, 255, 255, 255)];
问题是,无论我如何设置图层的颜色,我都会得到一个黑屏。 另一件事,如果我尝试按如下方式创建层:

// Inside a cass which extends CCScene
- (id)init {
    if (self = [super init]) {                    
        // Create the flash layer on level restart
        _flashLayer = [[CCLayerColor alloc] init];
        [_flashLayer setColor:ccc3(255, 255, 255)];
        [self addChild:_flashLayer z:0];
        [_flashLayer release];        
    }

    return self;
}
 _flashLayer = [[CCLayerColor alloc] initWithColor:ccc4(255, 255, 255, 255)];
我得到以下错误:

Incompatible type for argument 1 of 'initWithColor:'
我查看了来源,一切似乎都如预期的那样

有人能解释一下这个问题吗


谢谢。

只是一个建议。检查图层的内容大小。在cocos2d-x实现中,设置contentSize可更改要绘制的多边形顶点。我现在没有iPhone版本的cocos2d,但我认为它可以是相同的

您有两个选择:

_flashLayer = [[CCLayerColor layerWithColor:ccc4(255, 255, 255, 255)];
[self addChild:_flashLayer z:0];

在OP的第一个代码中:
[\u flashLayer setColor:ccc3(255,255,255)]
应该是
ccc4(255,255,255255)

因此:

\u flashLayer=[[CCLayerColor alloc]initWithColor:ccc4(255255)]

顺便说一句,场景中的其他元素(其他层和精灵)如预期般出现,如果您注意到我发布的第一个选择,但它不起作用,并且这仍然没有解决我提到的黑色问题,我想知道您是否注意到与您的帖子中的声明不同?如果你想使用
initWithColor
,你需要使用class方法
layerWithColor
,或者在alloc之前添加一个cast
(CCLayerColor*)
。是的,尝试了你的第二个选择,所有作品都像charm一样。谢谢(关于第一个选择仍然有点含糊不清。这是因为alloc返回CCLayer类型吗?为什么显式设置颜色不起作用?)第一个方法不起作用,因为
[[CCLayer颜色alloc]init]
没有对CCLayer颜色对象进行正确的初始化。CCLayerColor是CCLayer的一个子类,它在其实现中不重写
init
,因此您使用的
init
来自CCLayer类实现(这不是您所需要的)。您可以参考cocos2d iphone的CCLayer.m文件,查看
initWithColor:
layerWithColor
的实际功能。并且
layerWithColor:
的行为与
initWithColor:
不同。所以你在文章中写的第二种方法与我在文章中的第一种方法不一样。contentSize似乎还可以。。。我有1.0.1版,但没有找到任何与该版本相关的内容