2013年7月28日日曜日

【cocos2d】 習得メモ その1

ここ最近cocos2dに挑戦しておりまして、その際に気になったところなどを残しとこうかと思います

■cocos2d本
私が持っている本は1系をベースに解説されていますが、実装は2系でやっています。
そのため、内容が合わずそのまま使えないため読み替えが必要です。これから2系でやる方は、1系の本買わないように注意ですね。

ただ、設計思想とかTipsとかは参考になる箇所も多いかもしれません。
2系の本で「その思想も間違ってた!」なんて言われると困りますが・・・。

ちなみに本はコレです。新しい版は2系の記載になってるのかな??


■キャラクタのクラスはCCSpriteを継承しない方針で
ネット上のサンプルコードは、ほんとんどCCSpriteを継承して動かしたいキャラなどのスプライトつくってますが、Cocos2d本によると、継承はよくなくてコンポジションで作るべきとあります。理由はキャラとスプライトの関係は「IS-A」じゃなくて「HAS-A」だからです。まぁ確かにそうです。

小さいプログラム(カジュアルアプリとか?)では問題にならないかと思いますが、大きなアプリになってくると、コンポジションにしとけばよかったーなんて場面もありそうなんで、継承しない作り方で慣れていこうと思います。

大きなアプリを作る日がくるのかは置いといて( ´Д`;)

■タッチを検出しない
今作っているアプリでは、CCSpriteを持たせたキャラクタのクラスに、タッチのイベントなどをつらつらと書いています。
でキャラクタをいくつか生成して、CCSpriteをCCLayerに追加しています。そんななか、最後に作ったキャラクタのクラスしかタッチに反応しない事象が発生しました。原因はTouchDispatcherにデリゲートを設定するときの引数が良くなかったようです。

[[[CCDirector sharedDirector] touchDispatcher] addTargetedDelegate:self priority:0 swallowsTouches:YES];

swallowsTouches:YES → swallowsTouches:NO

YESだと最後に追加したクラスのデリゲートしか呼んでくれなくなるようで。

■実機でデバック
うちの場合iPhoneシュミレータで動かすと、MacのCPU使用率が高くなるため、部屋の温度が急上昇するは、Mac上のほかのアプリは重たくなるわで良い事無いので、実機で動かすようにしています。

以上です。まだまだわからない事だらけです( ´Д`;)


0 件のコメント:

コメントを投稿