在cocos2dx 2.x版本中,单点触摸的实现是通过重写函数实现的,主要代码如下:
// 需要重写的函数,单数形式bool cctouchBegan(CCtouch *ptouch,CCEvent *pEvent); // 触摸开始,注意返回类型,true表示继续响应CCtouchmove,CCtouchend,CCtouchCancalled,false表示不响应voID cctouchmoved(CCtouch *ptouch,CCEvent *pEvent); // 触摸滑动 voID cctouchended(CCtouch *ptouch,CCEvent *pEvent); // 触摸结束 voID cctouchCancelled(CCtouch *ptouch,CCEvent *pEvent);// 触摸取消 例如中途来点// 首先需要注册触摸CCDirector::sharedDirector()->gettouchdispatcher()->addTargetedDelegate(this,true);// 最后需要移除触摸CCDirector::sharedDirector()->gettouchdispatcher()->removeDelegate(this);
而在3.x版本中舍弃了这种写法,改用监听回调的方式实现,主要代码如下:
// 需要实现的回调函数,单数形式bool ontouchBegan(touch *touch,Event *unused_event); // 触摸开始voID ontouchmoved(touch *touch,Event *unused_event); // 触摸滑动voID ontouchended(touch *touch,Event *unused_event); // 触摸结束voID ontouchCancelled(touch *touch,Event *unused_event);// 触摸取消// 首先需要开启监听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);dispatcher->addEventListenerWithSceneGraPHPriority(Listener,this);// 最后需要移除监听dispatcher->removeEventListener(Listener);// 如果不使用dispatcher,则可以使用_eventdispatcher_eventdispatcher->addEventListenerWithSceneGraPHPriority(Listener,this);_eventdispatcher->removeAllEventListeners();总结
以上是内存溢出为你收集整理的COCOS-单点触摸全部内容,希望文章能够帮你解决COCOS-单点触摸所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)