Cocos2d-x   发布时间:2022-05-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了【Cocos2d开发】浅析Cocoss2d下的多点触控大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

新事件分发机制:在2.x 版本事件处理时,将要触发的事件交给委托代理(delegate)处理,再通过实现代理里面的onTouchBegan等方法接收事件,最后完成事件的响应。而在新的事件分发机制中,只需通过创建一个事件监听器-用来实现各种触发后的逻辑,然后添加到事件分发器_eventDispatcher,所有事件监听器有这个分发器统一管理,即可完成事件响应。

事件监听器有以下几种:

  • 触摸事件 (EventListenerTouch)

  • 键盘响应事件 (EventListenerKeyboard)

  • 鼠标响应事件 (EventListenerMousE)

  • 自定义事件 (EventListenerCustom)

  • 加速记录事件 (EventListenerAcceleration)

_eventDispatcher的工作由三部分组成:

  • 事件分发器 EventDispatcher

  • 事件类型 EventTouch,EventKeyboard 等

  • 事件监听器 EventListenerTouch,EventListenerKeyboard 等

监听器实现了各种触发后的逻辑,在适当时候由事件分发器分发事件类型,然后调用相应类型的监听器。

这里我们主要来了解Cocos2d3.x版本下的触摸事件中的多点触摸扩大缩放如何实现

[cpp]view plaincopy

  1. voidNewScene::onTouchesBegan(conststd::vector<Touch*>&touches,Event*unused_event){CCLOG("began");}

  2. voidHelloWorld::onTouchesMoved(:rgb(0,cocos2d::Event*event)

  3. {

  4. //多点

  5. if(touches.size()>1)

  6. {

  7. autodistance1=touches[0]->getPreviousLOCATIOn().distance(touches[1]->getPreviousLOCATIOn());

  8. autodistance2=touches[0]->getLOCATIOn().distance(touches[1]->getLOCATIOn());

  9. floatscale=sprite->getScale()*(distance2/distance1);

  10. scale=MIN(2,MAX(0.5,scalE));

  11. sprite->setScale(scalE);

  12. }

  13. else

  14. {

  15. log("单点");

  16. }

  17. }

  18. voidNewScene::onTouchesEnded(:rgb(0,Event*unused_event){CCLOG("End");}



分发器中注册这四个方法就可以直接实现多点触摸。

OK.于Cocos2d的多点触摸的学习就分享到此,有讲得不对的地方还望指出进行探讨互相学习!

大佬总结

以上是大佬教程为你收集整理的【Cocos2d开发】浅析Cocoss2d下的多点触控全部内容,希望文章能够帮你解决【Cocos2d开发】浅析Cocoss2d下的多点触控所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。