cocos2dの派生クラスで気をつけること2つ
また釣りっぽいタイトルになってしまった。。。
短いキーワードでタイトルを作ると自ずとそうなるのだろうか。
さて、cocos2d-xの書籍として「cocos2d-x 開発のレシピ」というのが発売されてまして、先日ひと通り読みました。
その上で、CCObjectを継承したクラスを作るときに、気をつけなければいけないと思った点が2点ありましたので紹介します。
つまり自分で調査した訳ではなく単なる抜粋です。すみません。
- 作者: 松浦晃洋,齊藤建二,古木映治
- 出版社/メーカー: 秀和システム
- 発売日: 2013/06/04
- メディア: 単行本
- この商品を含むブログ (5件) を見る
コンストラクタに例外が発生するような処理を書かない
軽量化のために、コンストラクタでは例外は扱わないようにしているらしいです。
ソースについては未調査です。
調査したら追記します。
基本的に、初期処理はinitXxx()メソッドを作ってそちらに書きましょう。
CCObject派生クラスにはinitXxx()メソッドは必ず用意するのがcocos2d-xの慣習(というか、cocos2d-iphoneから来たiOSの慣習だと思う)だと思うので用意するべきです。
あ、initXxx()は戻り値をboolにしてください。
create系メソッドを作ったらretain&autorelease
クラスを作ろときは (new Hogehoge())->init(); していらなくなったらretain、でもいいのですが、便利のためにコンビニエンスコンストラクタを作るのもいいですね。
cocos2d-xの命名規則ではcreate()やcreateWithXxx(Xxx xxx)が慣例のようです。
中では以下のようにします。
Hoge* ret = new Hoge();
if (ret != NULL && ret->init()) {
ret->autorelease();
return ret;
}
CC_SAFE_DELETE(ret);
return NULL;
CCSpriteとかのcreate()もこうなってるので見てみてください。