cocos2dxを使って結構時間が経つのですが、今さらながらCCActionクラスのCCFadeInとCCFadeOutが思うように動かせるようになりました。 今回は、このCCFadeInとCCFadeOutの使い方を紹介します。
CCFadeInとCCFadeOutとは
「CCFadeIn」「CCFadeOut」クラスを利用すれば、スプライトを透明にしたり、また透明から姿を表したりすることができます。 [c]
CCFadeIn *fadein = CCFadeIn::create(1.0f); this->runAction(fadein);
CCFadeOut *fadeout = CCFadeOut::create(1.0f); this->runAction(fadeout);
[/c]
このような感じに表現ができます。
透明->表示
ここからは、私の不勉強なのですが、いままで「透明のスプライトを表示させる」時には、対象のスプライトをsetVisible()を使っていました。 [c]
sprite -> setVisible(false);
〜〜〜〜〜〜〜〜〜〜〜〜
sprite -> setVisible(true); CCFadeIn *fadein = CCFadeIn::create(1.0f); sprite->runAction(fadein);
[/c]
このようにすると、CCFadeInを実行する際に一瞬だけスプライトが写ってしまいます。
正しい方法
実は「CCFadeIn」「CCFadeOut」は、opacityを調整して透明になっているのです。 これを最近知りました。
ですので、使うのはsetVisible()ではなくて、setOpacity()です。 [c]
sprite->setOpacity(0);
〜〜〜〜〜〜〜〜〜〜〜〜
CCFadeIn *fadein = CCFadeIn::create(1.0f); sprite->runAction(fadein);
[/c]
このようにすれば上手くいきます。
注意点
setOpacity()を使う注意点は、対象の子クラスに対しては透過効果が適応されないことです。 ですので個別に設定をする必要があります。