直接在cpp-empty-test中的代码中加的:
bool onTouchBegan(Touch *touch, Event *unused_event);
void onTouchEnded(Touch *touch, Event *unused_event);
结果发现这2个函数不会被调用,但多点触摸的回调是会被调用的
后来设置了这个也没用
this->setTouchMode(Touch::DispatchMode::ONE_BY_ONE);
为啥?
直接在cpp-empty-test中的代码中加的:
bool onTouchBegan(Touch *touch, Event *unused_event);
void onTouchEnded(Touch *touch, Event *unused_event);
结果发现这2个函数不会被调用,但多点触摸的回调是会被调用的
后来设置了这个也没用
this->setTouchMode(Touch::DispatchMode::ONE_BY_ONE);
为啥?
我也遇到了相同的问题,请问楼主解决了没有?
auto dispatcher = Director::getInstance()->getEventDispatcher();
auto listener = EventListenerTouchOneByOne::create();
listener->onTouchBegan = CC_CALLBACK_2(GameLayer::onTouchBegan,this);
listener->onTouchMoved = CC_CALLBACK_2(GameLayer::onTouchMoved,this);
listener->onTouchEnded = CC_CALLBACK_2(GameLayer::onTouchEnded,this);
listener->setSwallowTouches(true);//不向下传递触摸
dispatcher->addEventListenerWithSceneGraphPriority(listener,this);
我也这样写过,是可以的。
但我的疑问是:onTouchesBegan这个只需要重载就可以用了,如下:
virtual void onTouchesBegan (const std::vector< Touch * > &touches, Event *unused_event);
为什么onTouchBegan这样做就不行,一定要写那样一大堆代码。
请指教,谢谢!
因为Layer默认添加复数形式的触摸监听
void onTouchesBegan (…)是复数的
onTouchBegan(…)是单数的
如果再不清楚可以看一下
我之前使用cocos2d-iPhone的时候,对继承自CCSprite的对象进行触控操作非常简单,只要实现touchBegan…这些方法就可以了。与C2DX3.1相比,它不用自己写代码判断触点是否点中精灵。
因此产生了一些问题:
以上,继续表示感谢!
这问题跟天时地利人和有关吧,也许王哲大大在撸代码的时候,
突然发现昨天买的六he彩开了,没中,精灵触控不写了!
然后隔天撸代码的时候发现
六he彩买双中了好几W刀,多点触控就是默认了!
=================================================
:877:
好吧我的简单理解:
1.使用触摸机制可以更加灵活的控制,毕竟不是每个节点都需要响应触摸,还有再来就是容易集中管理
2.因为多点满足多个layer基本触摸需求,便于统一管理,单点触摸则使功能划分更清晰吧。
— Begin quote from ____
引用第6楼shun_fzll于2014-06-30 22:55发表的 回 5楼(swordkid) 的帖子 :
这问题跟天时地利人和有关吧,也许王哲大大在撸代码的时候,
突然发现昨天买的六he彩开了,没中,精灵触控不写了!
然后隔天撸代码的时候发现
六he彩买双中了好几W刀,多点触控就是默认了!
… http://www.cocoachina.com/bbs/job.php?action=topost&tid=206822&pid=992642
— End quote
可以理解,多谢答疑!