Wednesday, 15 May 2013

Cocos2d-x v3 iOS app not registering first x touch events -



Cocos2d-x v3 iOS app not registering first x touch events -

i have weird issue cocos2d-x v3, first 15 touches or not registered on ios device (tried ipad 2 , ipad air). touch registered, works fine (aka touches after trigger ontouch functions).

the touch events work fine in simulator. also, same code works fin in windows , android builds.

has had happen, or maybe know causing it?

i'm using listener, , debugged spot touchesbegan forwards input events listener, there events don't come in until after 15th tap or so.

it's weird... , figured i'd give shot here, might have encountered well, before start stripping code clean possible, , seek work way there...

kind regards, michaƫl

edit: requested, here code. desired behaviour works in ios devices should: first touch triggers ontouchbegan.

i didn't add together didn't think matter, since code works fine android. appreciate you'd see it, in case might have missed something

gamelayer cocos2d::layer.

void gamelayer::onenter() { cocos2d::cclayer::onenter(); // register touch event auto peventdispatcher = cocos2d::director::getinstance()->geteventdispatcher(); if (peventdispatcher) { // touch listener auto ptouchlistener = cocos2d::eventlistenertouchonebyone::create(); if (ptouchlistener) { ptouchlistener->setswallowtouches( true ); ptouchlistener->ontouchbegan = cc_callback_2( gamelayer::ontouchbegan, ); ptouchlistener->ontouchmoved = cc_callback_2( gamelayer::ontouchmoved, ); ptouchlistener->ontouchended = cc_callback_2( gamelayer::ontouchended, ); ptouchlistener->ontouchcancelled = cc_callback_2( gamelayer::ontouchcancelled, ); peventdispatcher->addeventlistenerwithscenegraphpriority( ptouchlistener, ); } } } bool gamelayer::ontouchbegan( cocos2d::touch* ptouch, cocos2d::event* /*pevent*/ ) { // breakpoint here triggers fine on first touch android/windows/ios simulator, // not on ios device (ipad/iphone) bool breakhere = true; <<snip actual code>> }

edit: problem std::ofstream trying open() on ios device (most in folder didn't have access to).

i have lots of layers in game , don't do. in code need eventdispatcher locally , create touch listener how seems odd me. i've never seen downwards way in many steps.

i do:

auto listener = cocos2d::eventlistenertouchonebyone::create(); listener->setswallowtouches(true); listener->ontouchbegan = [&](cocos2d::touch* touch, cocos2d::event* event) { homecoming true; }; listener->ontouchended = [=](cocos2d::touch* touch, cocos2d::event* event) { // ... }; cocos2d::director::getinstance()->geteventdispatcher()->addeventlistenerwithfixedpriority(listener, 31);

ios cocos2d-x cocos2d-x-3.0

No comments:

Post a Comment