LoginSignup
8
9

More than 5 years have passed since last update.

【Cocos2dx】v3.xのAndroidで重なり順(zorder)がおかしくなる

Last updated at Posted at 2014-09-04

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同士が位置的に重なっていると発生する。

8
9
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
9