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;
}

それを試してみてください。重要な部分はもちろん、スーパーへの呼び出しの変更です。[[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 などで初期化後に要素を作成して配置すると、この問題は解消され、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 に答える