Cocos2dx РегистрацияTouchDispatcher

Я начал использовать cocos2d-x в iphone. Я создал класс, который наследуется от cclayer. Теперь, когда я пытаюсь зарегистрировать его с помощью сенсорного диспетчера, он вылетает.

В файле .h:

класс BasePage: общедоступный 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;
}

Не могли бы вы дать мне какое-нибудь решение?


person SandipRudani    schedule 31.07.2012    source источник


Ответы (2)


Вы можете написать только эту строку в файле .m(или .cpp)

CCDirector::sharedDirector()->getTouchDispatcher()->addStandardDelegate(this, 0);
person Singhak    schedule 13.12.2013

На самом деле вам не нужно реализовывать свой собственный RegisterTouchDispatcher.

просто вызовите метод ниже в конструкторе или onEnter

setTouchEnabled(true);
setTouchMode(kCCTouchesOneByOne);

базовый класс сделает за вас весь беспорядок.

кроме того, вы должны установить сенсорный режим на kCCTouchesAllAtOnce, если хотите включить мультитач

PS: если вы переопределяете onEnter в своем собственном классе, не забудьте вызвать BaseClass::onEnter() в своей собственной функции onEnter, например

MyLayer::onEnter()
{
    CCLayer::onEnter();
    // do my own stuff
}
person Lorin    schedule 30.04.2014