Android版Cocos2D-Xゲームで異常なクラッシュ問題が発生しました。私はいくつかの他のアクションが完了したときに実行するコールバックを持っている多くの場所でラムダコールバックのAndroid Cocos2D-xアプリのSegフォールト
、次のように呼び出さ:アンドロイドで
playAnimationOnce(animationName, [this] {
m_animationStateMachine->changeState(TWITCHING_ANIM_STATE);
m_stateMachine->changeState(DEAD);
});
、m_animationStateMachine
がうまく状態を変化させることができるが、しかし、m_stateMachine
への参照を作ることです具体的には、クラッシュの原因:
signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x3f800044
Stack frame #00 pc 008ed5ec /data/app/com.bundleID.appname/lib/arm/libcocos2dcpp.so (_ZN12StateMachine11changeStateEPK5StatePKv+52): Routine StateMachine::changeState(State const*, void const*) at /path/to/project/proj.android-studio/app/jni/../../../Platform/Util/StateMachine.cpp:158
Stack frame #01 pc 007ef73c /data/app/com.bundleID.appname/lib/arm/libcocos2dcpp.so: Routine operator() at /path/to/project/proj.android-studio/app/jni/../../../Source/Actors/Hero.cpp:1291
ゲームがiOSの上で正常に動作します。私はiOS用のXCodeでコールバックの実行を踏んで、オブジェクトがiOS上で有効であることを確認しました。
私はAndroid上でデバッガを使用する方法がありませんので、各変数をlog文よりもよく調べることはできません。私はすでに試してみました
もの:
- が
[&]
代わりの[this]
- ちょうど二つの状態で
StateMachine
の全体の新しいインスタンスを作成してキャプチャ、これもクラッシュを引き起こしていました。
そして、私が現時点で忘れているカップルの他のもの。私に何かすべての提案を送ってもらえたら、何が原因か分かりません。