fc2ブログ

「魔法少女戦記外伝」DL委託販売中!!

DMM 同人様 Melonbooks DL様 DLsite.com 様
DMM 同人様 Melonbooks DL 様 DLsite.com 様



最新記事ほか

【cocos2d-x】CCLayeクラスのフェードイン&アウト

cocos2d-xを使っていたときに困った話。

ゲームに限らず演出で何かとお世話になることが多いフェードイン&アウト処理なんですが、cocos2d-xでは以下のような書式で実現させるのが常套手段ということが調べてわかりました。

CCSprite* pSprite = CCSprite::create();
this->addChild(pSprite);
// 最初は透明にする
pSprite->setOpacity(0);
// 0.5秒でフェードイン
CCFadeIn* fadein = CCFadeIn::create(0.5);
pSprite->runAction(fadein);

じゃあ早速こいつを使ってレイヤーも・・・という予定だったんですが、ところがギッチョン!というのが今回のお話です。





・・・で、早速スプライトやら何やらを積み込んだ CCLaye クラスに適用しようとしたところ、以下のようなビルドエラーが発生します。

error: 'class CCLaye' has no member named 'setOpacity'


全体の透明度を指定する setOpacity() 関数がないということなので、じゃあ setOpacity() 関数をコメントアウトしてこんな感じでどうですか?・・・と

CCLaye* pLayer = CCLaye::create();
this->addChild(pLayer);
// 最初は透明にする
//pLayer ->setOpacity(0);
// 0.5秒でフェードイン
CCFadeIn* fadein = CCFadeIn::create(0.5);
pLayer->runAction(fadein);

これでビルドはできるようになるんですが、実際に実行してもフェードインが発生しません。
じゃあどうしよう?と調べて見ると以下のサイト様にて、良い記事がありました。

[cocos2d-x] CCLayerのFadeIn/FadeOutとか (Cocoamix.jp様)

やはり同じようなことを考えていた人がいたらしく、早速試してみたのが以下のソースです。
(実装内容は最小限です。他の機能を使うときは自前で盛り込んでください)

#include "cocos2d.h"

class TestLayer: public cocos2d::CCLayerRGBA
{
public:
static TestLayer *create();
CC_PROPERTY(GLubyte, m_nOpacity, Opacity)
};



そんでもってこのクラスを使用して、元のコードをこんな感じで書き換えると・・・

やっとこさうまくいきました。

いくら CCLayer がフェードイン&アウトに対応していないからって、中にあるスプライトやらフォントやらに1つずつフェードイン&アウト設定は書きたくないですもんねw

というわけで、自分自身の備忘録を兼ねた小ネタ記事でした。
Cocoamix.jp様には大変お世話になりました、ありがとうございます。

でわでわ~ノシ
スポンサーサイト



コメントの投稿

非公開コメント

プロフィール

Empress

Author:Empress
同人サークル「Atelier Empress」を立ち上げてしまった愚か者です。少しずつでも作品を公開していければと思う次第でございます。

検索フォーム
リンク
カテゴリ
タグ一覧

同人 進捗 Unity 雑記 小ネタ 年末 コミケ C89 プログラミング 新年 Unity小ネタ Android コラム 

委託販売
スポンサード リンク
FLOWER KNIGHT GIRL オンラインゲーム 千年戦争アイギス オンラインゲーム
Twitter