C++初心者が【cocos2d-x】を勉強する。4回目

今月頭から、再度cocos2d-xの勉強を始めました。 まずは先日から作っているアクションゲームを、cocos2dxで作れないかという試みですが、実際にやってみるとかなりcocos2dと違いがあり苦労をしています。 今回は、その中でも私が苦労した部分をブログに書いていきたいと思います。

配列 CCArray

cocos2dの時には,NSMutableArrayを利用していました。 これはobjective-cでしか、利用できないのでcocos2dxではCCArrayを利用します。

初期化

CCArrayクラスを初期化するときには少し注意が必要です。 cocos2dxのクラスですcreate()を使えば、大概初期化できるのですが、CCArrayの場合は以下のようにする必要があります。 [c]

CCArray *array = new CCArray();

CCArray *array = CCArray::create(); array->retain();//retainした場合は、release()を忘れないよう注意

[/c]

[参考サイト]

for文

配列に格納したオブジェクトを一つずつ取り出して何かを行う。 私は、cocos2dで、これまでの幾度とこれを利用していました。 [c]

NSMutableArray * array;

for(CCNode *obj in array){

[obj removeFromParentAndCleanup:YES];

} [/c]

しかし、CCArrayでは、このようなfor文の使い方ができません。 まず、上記のようなfor文の使い方ができません。 CCARRAY_FOREACH()を利用します。

[c] CCObject *obj = NULL; CCARRAY_FOREACH(array, obj){

     CCSprite *sprite = (CCSprite*)obj;
     sprite->removeFromParentAndCleanup(true);

}

[/c]

文字列 CCString

cocos2dではNSStringを利用していましたが、cocos2d-xではCCStringクラスを利用します。 これらは似ているようで、実は使い方がちょっと違います。

C++では,std::string型に一度変換をしなおさないと使えません。 [c]

//cocos2d NSStringstring = @"hogehoge"; CCLabelTTF label = [CCLabelTTF labelWithString:string fontName:@"Mosamosa" fontSize:18];

//cocos2dx CCString string =CCString::create("hogehoge"); CCLabelTTF label = CCLabelTTF::create(string->m_sString.c_str(), "Mosamosa", 36);

[/c]

文字列を分解する

CCStringクラスには、NSStringクラスにある色々なメソッドがありません。 代わりに、std::string型に色々と使える方法があるみたいですので、これを利用します。 [c]

//文字列から文字を抜き出す。

//cocos2d NSString *getString = [string substringWithRange:NSMakeRange(1, 1)];

//cocos2dx CCString *string =CCString::create("hogehoge"); std::string hogehoge = string->m_sString; std::string getString(hogehoge,1,1);

[/c]

このような感じで、C++の知識がないとできないことが多そうなのが怖いですね。

アクション CCCallBlock

cocos2dxには、CCCallBlockクラスがありません。 これは、個人的に大変な問題です。 私はことあるごとに、CCCallBlockを使っています。ですので、同じような処理をするにはかなり工夫をしないといけません。CCCallFuncOクラスやCCCallFuncNを上手く使います。 引数が一つしか指定できないので、かなり不便ですが、そこはコードが複雑になるのですが、頭を働かせて解決するしかありません。

最後に

この週末に、以前cocos2dで作った、「ドラクエ式の文字表示」がcocos2dxでもできるようになりましたが、何かいろいろ違い過ぎて(objective-cc++)大変です。 ネットの日本語での情報が少ないので、今月に出る本の発売が待たれます。でも一気に出たな。

Cocos2d-x開発のレシピCocos2d-x開発のレシピ


秀和システム 2013-06-04
売り上げランキング : 1173

Amazonで詳しく見る
cocos2d-xによるiPhone/Androidアプリプログラミングガイドcocos2d-xによるiPhone/Androidアプリプログラミングガイド
清水 友晶

マイナビ 2013-06-18
売り上げランキング : 1459

Amazonで詳しく見る

個人的には洋書のこの本が気になるのですが、どうなんですかね。 これKindle版を買おうかな。