【Cocos2d入门教程八】浅析Cocoss2d下的多点触控

【Cocos2d入门教程八】浅析Cocoss2d下的多点触控,第1张

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

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

事件监听器有以下几种:

触摸事件 (EventListenertouch) 键盘响应事件 (EventListenerKeyboard) 鼠标响应事件 (EventListenerMouse) 自定义事件 (EventListenerCustom) 加速记录事件 (EventListeneracceleration)

_eventdispatcher的工作由三部分组成:

事件分发器 Eventdispatcher 事件类型 Eventtouch,EventKeyboard 等 事件监听器 EventListenertouch,EventListenerKeyboard 等

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

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

voID NewScene::ontouchesBegan(const std::vector<touch*>& touches,Event *unused_event)    { cclOG("began"); }voID HelloWorld::ontouchesMoved(const std::vector<touch *> &touches,cocos2d::Event *event){    //多点    if(touches.size() > 1)    {        auto distance1 = touches[0]->getPrevIoUsLocation().distance(touches[1]->getPrevIoUsLocation());        auto distance2 = touches[0]->getLocation().distance(touches[1]->getLocation());                float scale = sprite->getScale() * ( distance2 / distance1);        scale = MIN(2,MAX(0.5,scale));                sprite->setScale(scale);    }    else    {        log("单点");    }}voID NewScene::ontouchesEnded(const std::vector<touch*>& touches,Event *unused_event)    { cclOG("End"); }
分发器中注册这四个方法就可以直接实现多点触摸。

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

总结

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

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

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1067332.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存