例えば0.5秒後にメソッドを呼びたいとき。
CCSequence *seq = CCSequence::create(CCDelayTime::create(0.5), CCCallFunc::create(this, callfunc_selector(HogeScene::hoge))); runAction(seq);とか書いたりします。
これ、本来なら動きません。クラッシュします。
CCSeqenseには最後にNULLを入れなければいけないからです。
CCSequence *seq = CCSequence::create(CCDelayTime::create(0.5), CCCallFunc::create(this, callfunc_selector(HogeScene::hoge)), NULL); runAction(seq);
正しくはこっちですね。
CCSequence *seq = CCSequence::createWithTwoActions(CCDelayTime::create(0.1), CCCallFunc::create(this, callfunc_selector(MainScene::pressBtn))); runAction(seq);もしくはこう。
しかし、一番上のコード、動いちゃいます。
debugビルドのみ。
シミュレーターでも実機でもふつうに動きます。
ただ、リリースビルドでクラッシュします。かなりの罠です。
なので、CCSeqenseで2つのActionしか使わないときは
CCSequence::createWithTwoActions() を使いましょう。
もしくは単に遅延させてメソッド呼びたいならscheduleOnce使ってもいいです。というかそっちのがいいかも。