49hack

見習いエンジニアが魔法使いになるまで

cocos2d-x

cocos2d-xでダイアログを表示する

単純にダイアログを表示するだけであればCCMessageBoxを使えばいいですね。 CCMessageBox("メッセージ", "タイトル"); ただ、ボタンのタイトルは「OK」で固定されてるし、delegateはnilで受け取れません。 そのため、ダイアログからさらにアクションを起こし…

オブジェクトのZ値を変更する

オブジェクトのZ値を変更したい場合、単純に int order = 100; node->setZOrder(order); としても変更されません。 一度addChildしたオブジェクトのZ値を変更する場合は、reorderChildを使って親オブジェクトから設定してやる必要があります。 CCNode* paren…

オブジェクトがアニメーション中かどうか判定する

たとえば複数のオブジェクトをランダムでアニメーションさせたいときなどに、現在そのオブジェクトがアニメーション中の場合はキャンセルしたいです。 判定する方法はいたって単純。 void SampleScene::actionNodeAtRandom(CCNode* hogeNode) { if ( hogeNod…

cocos2d-xで[node isKindOfClass:[CCSprite class]]みたいにクラスを判定する方法

例えば、HogeLayerの子供の中でCCSpriteにだけ処理をしたい場合は以下のように実装します。 CCArray* children = HogeLayer->getChildren(); for (int i=0; i<children->count(); i++) { if (dynamic_cast<CCSprite*>(children->objectAtIndex(i))) { // 処理 } } ただし、高価な方</ccsprite*></children->…

cocosbuilderのアニメーション終了時に何か処理を実行したい

cocosbuilderでタイムラインを作成してアニメーションさせたとき、その終了時に処理を実行したい場合はCCBAnimationManagerDelegateを使います。 // GameLayer.h class GameLayer : public CCLayer , public CCBAnimationManagerDelegate // CCBAnimationMan…

他のクラスからAppDelegateにアクセスする

シーン間で共通化しているもの、例えばゲーム画面にアクセスしたい場合、 // AppDelegate.h #include "cocos2d.h" USING_NS_CC; class AppDelegate : private cocos2d::CCApplication { CCNode *gameNode; // ゲーム画面 void loadGameNode(); public: AppDe…

「'string' file not found 」のエラーを解消する

Cocos2d-xで開発していると突然「'string' file not found」のエラーでビルドが失敗しました。 エラーを出しているのはCCDataVisitor.hというcocos2d-x内のファイル。原因がわからなすぎる…。 Objective-Cのコードと共存させるところで失敗しているとこのよ…

「Couldn't load cocos2dx.xcodeproj because it is already opened from another project or workspace」 の対処

Cocos2d-xでiOSアプリを開発している際、以下のようなエラーに遭遇することが多々あります。 Couldn't load cocos2dx.xcodeproj because it is already opened from another project or workspace エラー文の通り、すでにcocos2dxプロジェクトを開いている場…

画像サイズ対応/解像度対応でつまづいた

CocosBuilderでマルチレゾリューション対応が簡単にできるということだったので、参考書のとおりにレイアウトを構成し、画像を書き出してcocos2d-xプロジェクトのResourcesへ追加。 するとぜんぜんうまくいかなくて苦戦したのでメモしておきます。 CocosBuil…