がおまる開発ブログ

cocos2d-xやlevelhelperを使って iPhone/Androidアプリの作り方を解説します

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

[LevelHelper講座]第10回:カスタムクラスを使う

LevelHelperにはカスタムクラスという機能があります。
好きなクラスを作成出来て、対象スプライトに定義することができます。

■使用例
・キャラクターの名前
・キャラクターのヒットポイント
・保持しているスコア

こんな感じでデフォルトで何か値を保持したい時に便利です。
もちろんGetter/Setterなので値の取得/変更も可能です。


LevelHelperを開いてCustom Propertiesタグから
カスタムクラスを新規で作成していきましょう。
s_20130128_0.png

設定するスプライトにカスタムクラスをあてがいます。
s_20130128_1.png

カスタムクラスを追加したので、
ソースの出力を行なってください。
s_20130128_4.png


ソースの出力を行うと「CustomClasses」フォルダにカスタムクラスが生成されています
XCodeを開いて、作成されたカスタムクラスをADDしておきます。

s_20130128_2.png


今回のサンプルはANIMALタグで取得して、
画面をタッチした所にスプライトがあれば取得する。
その取得したスプライトのカスタムクラスを取得しようと思います。

void HelloWorld::ccTouchesEnded(CCSet* touches, CCEvent* event)
{
CCSize s = CCDirector::sharedDirector()->getWinSize();

//Add a new body/atlas sprite at the touched location
CCSetIterator it;
CCTouch* touch;

for( it = touches->begin(); it != touches->end(); it++)
{
touch = (CCTouch*)(*it);

if(!touch)
break;

CCPoint location = touch->getLocationInView();
location = CCDirector::sharedDirector()->convertToGL(location);

// ANIMALタグを全て取得
CCArray* spritesWithTag = lh->spritesWithTag(ANIMAL);
CCObject* data = NULL;
CCARRAY_FOREACH(spritesWithTag, data) {
LHSprite* spr = (LHSprite*)data;

// タッチした所にスプライトがあるかどうか確認
if (spr->isTouchedAtPoint(location)) {

// カスタムクラスをuserInfoで取得する
LHAnimalClass* cl = (LHAnimalClass*) spr->userInfo();

if (cl != NULL) {
// 定義したプロパティ名で取得する事が出来ます
CCLog("name=%s", cl->getName().c_str());
CCLog("hp=%f", cl->getHp());

}

}

}
}
}



スポンサーサイト

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://gaomar.blog.fc2.com/tb.php/27-f10e1ac3
この記事にトラックバックする(FC2ブログユーザー)

FC2Ad

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。