cococs2d-x v3.0とv3.1環境でAndroidで動作させた際に、
重なり順が壊れてしまい正常に描画されない場合がある。
原因としてはCCNode.cppのsortAllChildren()で子Nodeを並び替えている部分がある。
ここのstd::sortがAndroidだと上手くいかないため発生している。
以下のように修正すれば解決する
cocos2d/cocos/2d/CCNode.cpp(修正前)
if( _reorderChildDirty ) {
std::sort( std::begin(_children), std::end(_children), nodeComparisonLess );
_reorderChildDirty = false;
}
cocos2d/cocos/2d/CCNode.cpp(修正後)
if( _reorderChildDirty ) {
std::stable_sort( std::begin(_children), std::end(_children), nodeComparisonLess );
_reorderChildDirty = false;
}
この事象が発生するのはzorderが同じ数値で、Node同士が位置的に重なっていると発生する。