Cocos2d-x3.0alpha0のCocosBuilder使用ソースを3.0alpha1に対応する
はじめに
前回(cocos2d-x3.0alpha0のprojectを3.0alpha1に移行してみる)でcocos2dxだけ使ってるプロジェクトの移行は説明しましたが、CocosBuilder使ってると結構作業増えたので、メモがてら残しておきます。
手間取った作業一覧
- CocosBuilderがextensionsから脱退しました。
- extensionsがcreate_project.pyでの自動生成のAndroid.mkからいなくなってました
- Layer.cppのsetTouchEnabledが廃止メソッドになっていた
移行作業内容
以下は、抜粋した修正内容を載せてます。こちら(github)から全ソースの差分が見れます。
1. jni/Android.mkの修正
box2dは使ってなかったのでついでに削りました。混乱させたらすみませんm( )m
cocos2dx/project/Cocos2dxSRPGQuest/proj.android/jni/Android.mk
★Before
LOCAL_WHOLE_STATIC_LIBRARIES += cocos2dx_static LOCAL_WHOLE_STATIC_LIBRARIES += cocosdenshion_static LOCAL_WHOLE_STATIC_LIBRARIES += box2d_static LOCAL_WHOLE_STATIC_LIBRARIES += cocos_extension_static LOCAL_WHOLE_STATIC_LIBRARIES += cocos2dxandroid_static $(call import-module,cocos2dx) $(call import-module,cocos2dx/platform/third_party/android/prebuilt/libcurl) $(call import-module,CocosDenshion/android) $(call import-module,extensions) $(call import-module,external/Box2D) $(call import-module,cocos2dx/platform/android)
★After
LOCAL_WHOLE_STATIC_LIBRARIES := cocosbuilder_static LOCAL_WHOLE_STATIC_LIBRARIES += cocos2dx_static LOCAL_WHOLE_STATIC_LIBRARIES += cocosdenshion_static LOCAL_WHOLE_STATIC_LIBRARIES += cocos_extension_static $(call import-module,extensions) $(call import-module,editor-support/cocosbuilder) $(call import-module,2d) $(call import-module,audio/android)
ソース差分はこちら(github)
2. cocosbuilderのクラスを使っているソースのincludeとnamespaseの修正
cocos2dx/project/Cocos2dxSRPGQuest/Classes/title/TitleScene.cpp
★Before
#include "cocos2d.h" #include "cocos-ext.h" USING_NS_CC; USING_NS_CC_EXT; class TitleScene : public Layer, public CCBSelectorResolver { // 〜省略〜 }
★After
#include "cocos2d.h" #include "extensions/cocos-ext.h" #include "cocosbuilder/CocosBuilder.h" USING_NS_CC; USING_NS_CC_EXT; class TitleScene : public Layer, public cocosbuilder::CCBSelectorResolver { // 〜省略〜 }
ソース差分はこちら (github)
3. setTouchEnabledとsetTouchModeの廃止対応
cocos2dx/project/Cocos2dxSRPGQuest/Classes/quest/SRPGScene.cpp
★Before
bool SRPGScene::init() { // 〜省略〜 this->setTouchEnabled(true); this->setTouchMode(Touch::DispatchMode::ONE_BY_ONE); // 〜省略〜 }
★After
bool SRPGScene::init() { // 〜省略〜 auto listener = EventListenerTouchOneByOne::create(); listener->onTouchBegan = CC_CALLBACK_2(SRPGScene::onTouchBegan, this); listener->onTouchMoved = CC_CALLBACK_2(SRPGScene::onTouchMoved, this); listener->onTouchEnded = CC_CALLBACK_2(SRPGScene::onTouchEnded, this); this->getEventDispatcher()->addEventListenerWithSceneGraphPriority(listener, this); // 〜省略〜 }
ソース差分はこちら(github)
まあ、ぶっちゃけ廃止メソッドの対応は「cocos2dx/sample」下のソースを漁るのが一番早いですね!!!