cocos2d-x-3.0系 で CDTで実際開発してみる
自メモ)
で実際の新規作成。
今回はIOS版の某ソフトの移植なので
ファイル名とかとりあえずIOS版に似せましょう=>リファクタリングを実行してみる
名前のリファクタリングが効かないCDT様。。。
HelloWoldScene => ViewController
とか治そうとすると全部手動。。。
コマンド | mac | win |
---|---|---|
小文字に変更 (To Lower Case) | shift + command + Y | Ctrl + Shift + Y |
大文字に変更 (To Upper Case) | shift + command + X | Ctrl + Shift + X |
あたりを駆使して define文とかもカキカキ
次に新規クラスを作ってみる
GameMainViewController | cocos2d::Layer |
メソッドの追加
static cocos2d::Scene* createScene(); virtual bool init(); virtual void onExit();//rc2あたりから自前で開放しないと駄目らしい CREATE_FUNC (ViewController);
ここらへんみてると他の人って新規ソース作る時どうしてるのかなーとか
思ってしまったりする
で書いてみたのがこんなかんじだけど
これが期待されるテンプレートなのかな?うーん(゜-゜)
- GameMainViewController.h
#ifndef __GAME_MAIN_VIEW_CONTROLLER_H__ #define __GAME_MAIN_VIEW_CONTROLLER_H__ //#include <CCScriptSupport.h>//自動生成でくっついてきた #include "cocos2d.h" //<=でも期待されてるのこっちだよね?? USING_NS_CC; //このnamespace宣言が無いと Eventクラス等が参照エラーに成ってハマる☆ class GameMainViewController: public cocos2d::Layer { public: static cocos2d::Scene* createScene(); virtual bool init(); virtual void onExit();//rc2あたりから自前で開放しないと駄目らしい CREATE_FUNC (GameMainViewController); }; #endif /* __GAME_MAIN_VIEW_CONTROLLER_H__ */
- GameMainViewController.cpp
//#include <GameMainViewController.h> //自動生成コード #include "GameMainViewController.h" //こっちじゃないとローカルのヘッダ探してくれないっぽい USING_NS_CC; //このnamespace宣言が無いと Eventクラス等が参照エラーに成ってハマる☆ Scene* GameMainViewController::createScene() { // 'scene' is an autorelease object auto scene = Scene::create(); // 'layer' is an autorelease object auto layer = GameMainViewController::create(); // add layer as a child to scene scene->addChild(layer); // return the scene return scene; } // on "init" you need to initialize your instance bool GameMainViewController::init() { ////////////////////////////// // 1. super init first if (!Layer::init()) { return false; } return true; } void GameMainViewController::onExit() { Layer::onExit();//自分で明示的に開放処理しろという路線らしい(rc2以降) ☆☆ }
☆☆)
ここまで来ると自作SceneManagerとか作って自前で開放とかやったほうがいいかもしれない。。。
<現在公式でSceneManagerっぽい事やってるクラスは
Director::pushScene() Director::popScene()
らへん。
今回はLayerだけだけど、EventDispacher系もここで開放したほうが良い*1とのこと
まあそれもあって自前でやれってことなんだろうけど
cpptestのサンプルじゃこの実装内から普通わからんよ?
まあ補完も効かんしな。。*2
でとりあえず動かすだけ動かしてみると
cocos2d-xのcore側の info/warning/error ログでLogcatが埋まると。。。
Logcatフィルタ
でとりあえず弾いてるけど なんだかな。。。これ。。。(汗
tag:^(?!cocos2d-x)
- Android.mk
LOCAL_CFLAGS += -DCOCOS2D_DEBUG=0
- Application.mk
APP_CPPFLAGS += -DCOCOS2D_DEBUG=0
とかってCCLOGの出力しない設定だけだしな、、、
ってみてたら
これでデバックできるよ。。。(泣) *3
でもこれ調べてみたらalphaの頃からあったバグらしくて
XCodeでは出てないんですかねーこれ(汗
この対処の後であれば
でCCLOGが参照できるようなので,LogCatフィルターは下記で良いっぽい
cocos2d-x debug info
tag:^(?!NativeActivity|dalvikvm|skia|cocos2dx)
ネット情報系のメモ)
基本2系の情報だらけなので置き換えて考える必要があり
3.0系のブログ)
- cocos2d-x: cocos2d-x
- Cocos2d-x Betaでチェックしておきたい変更点(Value,EventListener,gui::UIButton,gui::UIPageViewなど) - Qiita
- Cocos2d-x3.0alpha0のCocosBuilder使用ソースを3.0alpha1に対応する - きょこみのーと
これはたぶん
のはなしと絡む話だと思う。これ物理メモリ512MBのAnd端末*4とかでOOMが発生しやすいらしく
結構大事な話だとか。。。
アンカー座標系の話)
クラス名の相対表
ラムダ式の書き方
- http://wonderpla.net/blog/engineer/cocos2d-x+v3.0-pre-alpha0
- https://github.com/cocos2d/cocos2d-x/blob/develop/docs/RELEASE_NOTES.md
シングルトン設計
ScrollView関連の検証
3.0beta => 3.0RC0 移行でやった作業メモ)
- 新規プロジェクト作成
- ソースコピー
- Resource
- proj.android/jni
- .cproject
- ソース変更
- Classes
Object* =>Ref*
- .project変更(下記のあたり追加)
<buildSpec> <buildCommand> <name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name> <triggers>clean,full,incremental,</triggers> <arguments> </arguments> </buildCommand> <linkedResources> <link> <name>Classes</name> <type>2</type> <locationURI>PARENT-1-PROJECT_LOC/Classes</locationURI> </link> <link> <name>cocos2dx</name> <type>2</type> <locationURI>PARENT-1-PROJECT_LOC/cocos2d/cocos/2d</locationURI> </link> <link> <name>extensions</name> <type>2</type> <locationURI>PARENT-1-PROJECT_LOC/cocos2d/extensions</locationURI> </link> <link> <name>Resources</name> <type>2</type> <locationURI>PARENT-1-PROJECT_LOC/Resources</locationURI> </link> <link> <name>scripting</name> <type>2</type> <locationURI>PARENT-1-PROJECT_LOC/cocos2d/cocos/scripting</locationURI> </link> <!-- X-pluginを使うなら追加 start--> <link> <name>include_protocols</name> <type>2</type> <locationURI>PARENT-1-PROJECT_LOC/cocos2d/plugin/protocols/include</locationURI> </link> <link> <name>include_android</name> <type>2</type> <locationURI>PARENT-1-PROJECT_LOC/cocos2d/plugin/protocols/platform/android</locationURI> </link> <!-- X-pluginを使うなら追加 end--> </linkedResources>