0

我有一个标准场景,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 运行场景。

4

2 回答 2

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

    }

return self;
}

试试看。重要的部分当然是对 super 的调用的变化。如果您处于横向状态(从您遇到的错误判断 - 您是),您可能仍然会在 -init 方法中正确读取 [[CCDirector] winSize] 问题,至少我在测试中这样做了。我记得,这是某种已知的错误,因为它似乎将 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 中,此问题就会消失,并且来自 director 的 winSize 可以正确读取。奇怪的错误,它是。

于 2012-07-28T23:28:06.193 回答
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];
于 2012-07-27T04:04:09.400 回答