cocos2d-xのcreateには注意!!
cocos2d-xでは、サンプルのコードで以下のようなcreate文があって
真似して作りたくなります。
///////////////////////////// // 2. add a menu item with "X" image, which is clicked to quit the program // you may modify it. // add a "close" icon to exit the progress. it's an autorelease object CCMenuItemImage *pCloseItem = CCMenuItemImage::create( "CloseNormal.png", "CloseSelected.png", this, menu_selector(HelloWorld::menuCloseCallback));
ちなみにこのcreateは、
autoreleaseを読んでいまして、使い終わったら解放してくれます。
しか~し!!
CCControlButtonなど、ccontrol_selectorをつかったコントロールでやると
イベントが残ったままになり、暴走することがあります!!!
解決方法は、最底辺なので正確にはしりませんが、以下のような方法がありそうです。
1)コントロールは、クラスのメンバにしてデストラクタで解放する。
class SampleClass : public CCLayer{ .... CCControlButton *closeButton_; }
そしてデストラクタで確実に解放。
SampleClass::~SampleClass(){ CC_SAFE_RELEASE_NULL(closeButton); }
2)デストラクタでremoveAllChildrenを呼び出す。
こいつをやると、自身のコントロールにぶら下がっている子コントロールの
スケジューラやイベントをクリアしてくれるみたいです。
SampleClass::~SampleClass(){ this->removeAllChildren(); }
まあ、正しい方向かしらないので、ちゃんと有識者の人に聞いたほうが良さそうですね。
ディスカッション
コメント一覧
まだ、コメントがありません