Cocos2d-x3.0rc0からCocos2d-x3.0rc1への移行メモ
いつものやつです。Androidの変更でちょっとハマった。。。
いつものnew Projectとのdiff
いつもどおりiOS
とAndroid
以外はスルー
proj.android
rc0のCocos2dxActivity
がrc1ではAppActivity.java
に変わった。
diff -r ./proj.android/AndroidManifest.xml /Users/kyokomi/git/MyCppGame/proj.android/AndroidManifest.xml 14c14 < <activity android:name="org.cocos2dx.cpp.Cocos2dxActivity" --- > <activity android:name="org.cocos2dx.cpp.AppActivity" Only in /Users/kyokomi/git/MyCppGame/proj.android/src/org/cocos2dx/cpp: AppActivity.java Only in ./proj.android/src/org/cocos2dx/cpp: Cocos2dxActivity.java $ diff main.cpp ~/git/cocos2droguelike/proj.android/jni/roguelike/main.cpp 13c13 < void cocos_android_app_init (JNIEnv* env, jobject thiz) { --- > void cocos_android_app_init (struct android_app* app) {
proj.ios_mac
diff -r ./proj.ios_mac/ios/main.m /Users/kyokomi/git/MyCppGame/proj.ios_mac/ios/main.m 3,5d2 < // Under iOS and the Simulator, we can use an alternate Accelerometer interface < #import "AccelerometerSimulation.h" <
そんなに移行としては修正する箇所はなかった。とりあえず移行はスムーズにできた。
Deprecatedになったクラスの修正
LabelTTF
がDeprecatedになってLabel
を使うのが推奨になったみたいです。
どうやらSpriteBatchNode
を使うように改善したみたい。
すごい手抜きなコードで、LabelTTF
にLayer
をaddChildしてるところがあって、Label
に置換したらBAD_ACCESSで落ちました。
確かにSpriteBatchNode
で使いまわしてるのでaddChildとかダメですよね(T_T)
下地にするLayer
をcreateして、その上にLabel
とLayer
をaddChildすればOKすね。
Android起動でコケる現象が起きました
すでに「いつものnew Projectとのdiff」の内容に記載ずみですが、main.cppを直し忘れて起動時に以下のエラーが出てこけてました。((((;゚Д゚))))ガクガクブルブル
お気をつけください。
W/ActivityManager( 756): Force finishing activity com.kyokomi.cocos2d.roguelike/org.cocos2dx.cpp.AppActivity W/InputDispatcher( 756): channel '43bbb670 com.kyokomi.cocos2d.roguelike/org.cocos2dx.cpp.AppActivity (server)' ~ Consumer closed input channel or an error occurred. events=0x9 E/InputDispatcher( 756): channel '43bbb670 com.kyokomi.cocos2d.roguelike/org.cocos2dx.cpp.AppActivity (server)' ~ Channel is unrecoverably broken and will be disposed! W/InputDispatcher( 756): Attempted to unregister already unregistered input channel '43bbb670 com.kyokomi.cocos2d.roguelike/org.cocos2dx.cpp.AppActivity (server)' I/WindowState( 756): WIN DEATH: Window{43bbb670 u0 com.kyokomi.cocos2d.roguelike/org.cocos2dx.cpp.AppActivity} I/WindowState( 756): WIN DEATH: Window{43bbb928 u0 SurfaceView} D/Zygote ( 184): Process 19043 terminated by signal (11) D/dalvikvm( 756): GC_FOR_ALLOC freed 2028K, 15% free 50166K/58716K, paused 74ms, total 74ms W/ActivityManager( 756): Exception thrown during pause W/ActivityManager( 756): android.os.DeadObjectException W/ActivityManager( 756): at android.os.BinderProxy.transact(Native Method)
感想
今回のバージョンはWP8
対応がメインなのかな。
あとはAndroidのmainで呼び出すactivityがAppActivity
になった点(NativeActivity.cppが廃止になった)ですねー(^_^;)
これでCocos2d-x2.x系でAndroid側をゴリゴリいじったやつも少しは、移行しやすくなるかな・・・