2011-12-21 11 views
1

cocos2d iphoneの現在のランニングシーンにトランジションエフェクトを追加する方法。私はゲームをしていることを意味し、それぞれの目標の後に、現在のランニングシーンにフェード効果やあらゆるタイプのエフェクトを加えたいとします。cocos2d iphoneで現在実行中のシーンにトランジションエフェクトを追加する方法

これを書き込むと、現在のシーンが新しいシーンに置き換えられます。しかし、私は場面を置き換えたくありません。

[[CCDirector sharedDirector] replaceScene:[CCTransitionFade transitionWithDuration:1.0f scene:[GamePage scene]]]; 

このような現在のページに影響を与える方法はありますか?私はそれが間違っていることを知っているが、私はこのような何かしたい:あなたは全体CCLayer

[self runAction:[CCFadeOut actionWithDuration:0.5f]]; 

上でアクションを実行することができます

[self transitionEffect:[CCTransitionFade actionWithDuration:0.5]];

答えて

5

シーンでは、不透明度に関連するレイヤ(CCNodeのサブクラス)アクションは機能しません。 !

移行を使用するか、CCFadeToをすべてのスプライトに適用する必要があります。

しかし、すべてのスプライトにCCFadeToを選択する場合は、突然多くのアクションを割り当てる必要があります。 FPS減速!!

別の最適なアプローチ:

は1×1ピクセルスクエア黒ドット画像を作るために、あなたの設計者に知らせます。 最後にこのコードをinitメソッドに追加します。

CCSprite *temp=[CCSprite spriteWithFile:@"squaredotBlack.png"]; 
    temp.position=ccp(s.w/2,s.h/2); 
    [self addChild:temp z:50000]; //set as most top layer 
    temp.scaleX=s.w; 
    temp.scaleY=s.h; 
    temp.opacity=0; 

次に、画面全体の「フェードアウト」処理のために、不透明度を上げます。

temp.opacity=0; 
    [temp runAction:[CCFadeTo actionWithDuration:1 opacity:255]]; //0 to 255 

次に、画面全体の「フェードイン」処理で、不透明度を下げます。

temp.opacity=255; // this will cover whole screen with black color 
       [temp runAction:[CCFadeTo actionWithDuration:1 opacity:0]]; //255 to 0 
+3

シーン上にカラーの黒と不透明度0のCCColorLayerを上書きし、そのレイヤーの不透明度にCCFadeToアクションを実行すると、ダミーpngは必要ありません。 – habitoti

1

をか、目的の不透明度にフェードするCCFadeToを使用することができます。

+0

このコードは機能しますが、CCLayerにのみ機能します。私はレイヤーにいくつかのスプライトを追加しました。レイヤーだけでなくシーン全体に効果を加えたいと思います。全体のシーンのコードを教えてください。 – dayitv89

+1

レイヤーではなく、シーンインスタンスにrunActionメソッドを送信するだけです。 – LearnCocos2D

関連する問題