読者です 読者をやめる 読者になる 読者になる

きょこみのーと

元六本木でGo書いてました。今はVRでGo書いてます。

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」下のソースを漁るのが一番早いですね!!!