0

iphoneでcocos2d-xを使い始めました。cclayer を継承するクラスを作成しました。タッチディスパッチャーに登録しようとするとクラッシュします。

.h ファイル内:

class BasePage : public cocos2d::CCLayer

そして.mファイル:

CCDirector::sharedDirector()->getTouchDispatcher()->addTargetedDelegate(this, INT_MIN + 1, true);

そして、ccobject.m ファイルでクラッシュします。

void CCObject::retain(void)
{
    CCAssert(m_uReference > 0, "reference count should greater than 0");[here is crash]

    ++m_uReference;
}

解決策を教えてください。

4

3 に答える 3

0

この行だけを.m(または.cpp)ファイルに書くことができます

CCDirector::sharedDirector()->getTouchDispatcher()->addStandardDelegate(this, 0);
于 2013-12-13T09:02:08.690 に答える
0

実際、独自の RegisterTouchDispatcher を実装する必要はありません。

コンストラクターまたは onEnter で以下のメソッドを呼び出すだけです

setTouchEnabled(true);
setTouchMode(kCCTouchesOneByOne);

基本クラスが面倒なことをすべてやってくれます。

さらに、マルチタッチを有効にしたい場合は、タッチ モードをkCCTouchesAllAtOnceに設定する必要があります。

ps: 独自のクラスで onEnter をオーバーライドする場合は、独自の onEnter 関数でBaseClass::onEnter()を呼び出すことを忘れないでください。

MyLayer::onEnter()
{
    CCLayer::onEnter();
    // do my own stuff
}
于 2014-04-30T05:11:09.313 に答える