Cocos2d ColorLayer使屏幕的一半变黑

时间:2012-07-27 02:17:30

标签: colors cocos2d-iphone scene

我有init方法的标准场景如下:

@interface CommodoreScene : CCLayerColor

@end


@implementation CommodoreScene

- (id) init {
    if (( self=[super initWithColor:ccc4(255, 255, 255, 255)] )) {

    }

    return self;
}

@end

然而,当我在iPhone4上运行场景时,或模拟器的一半屏幕变黑,另一半是我的图层颜色(白色)。

我目前正在运行[_director pushScene:[CommodoreScene node]];并运行cocos2d-iphone 2.0.0的场景。

2 个答案:

答案 0 :(得分:1)

- (id) init {
    if (( self=[super initWithColor:ccc4(255, 255, 255, 255) width:480 height:320] )) {

    }

return self;
}

试试吧。重要的部分当然是对超级电话的改变。你可能仍然有一个问题[[CCDirector] winSize]在-init方法中正确阅读,如果你在景观中(根据你遇到的错误判断 - 你是),至少我在测试中做了。我记得,这是一个已知的某种类型的错误,因为它似乎将winSize视为肖像而不是横向。您可以通过执行以下操作来解决此问题:

CGRect rect = CGRectMake(0, 0, 480, 320);
CGSize size = rect.size;
// position the label on the center of the screen
label.position =  ccp( size.width /2 , size.height/2 );

在-init方法中使用新创建的大小而不是winSize可以解决问题。请注意,如果在初始化之后创建并定位元素,例如在onEnter中,则此问题消失,导演的winSize正确读取。奇怪的是,它是。

答案 1 :(得分:0)

您可以更改颜色图层的内容大小;

CGSize boxSize = CGSizeMake(sGame.winWidth, sGame.winHeight);
CCLayerColor *box = [CCLayerColor layerWithColor:ccc4(155,155,200,255)];
box.position = ccp(0.0f, 0.0f);
box.contentSize = boxSize;

[self addChild:box z:-6];