2012-04-21 36 views
1

シーン全体を白く塗りつぶすことを目的とするレイヤーを追加しようとしています。CCLayerColorが正常に動作しない

私は次のようにそれをやってみてください。

// 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:' 

があると思われます。

誰でもこの問題を解明できますか?

ありがとうございました。

+0

シーン内の他の要素(他のレイヤーとスプライト)が期待通りに表示されます – giorashc

答えて

2

ことができると思うあなたは二つの選択肢があります:OPの最初のコードで

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

または

// the key is to add (CCLayerColor *) to cast 
// or you will meet 'incompatible type for argument' error at compile time 
_flashLayer = [(CCLayerColor *)[CCLayerColor alloc] initWithColor:ccc4(255, 255, 255, 255)]; 
[self addChild:_flashLayer z:0]; 
[_flashLayer release]; 
+0

私が投稿した最初の選択とそれは動作しませんでしたが、これはまだ私が言及した黒の色の問題を解決しません – giorashc

+1

あなたはあなたの記事のステートメントからの違いに気づいたのだろうか? 'initWithColor'を使いたい場合は、クラスメソッド' layerWithColor'を使うか、** allocの前にキャスト '(CCLayerColor *)' **を追加する必要があります。 – Hailei

+0

うん、あなたの第二の選択肢を試して、すべての作品は魅力のようです。ありがとう! (なぜなら、allocはCCLayer型を返すので、明示的に色を設定していないのですか?) – giorashc

0

ちょっとした提案です。あなたのレイヤのcontentSizeを確認してください。 cocos2d-x実装の設定では、contentSizeは描画されるポリゴンの頂点を変更します。私は今、cocos2dのiPhone版を持っていないが、私はそれが同じ

+0

contentSizeは大丈夫そうです...バージョン1.0.1がありますが、バージョンに関連するものは見つかりません – giorashc

0

を:
[_flashLayer setColor:ccc3(255, 255, 255)]だからccc4(255, 255, 255,255)
次のようになります。
_flashLayer = [[CCLayerColor alloc] initWithColor: ccc4(255,255,255,255)];

関連する問題