新事件分发机制:
在2.x 版本事件处理时,将要触发的事件交给委托代理(delegate)处理,再通过实现代理里面的onTouchBegan等方法接收事件,最后完成事件的响应。而在新的事件分发机制中,只需通过创建一个事件监听器-用来实现各种触发后的逻辑,然后添加到事件分发器_eventDispatcher
,所有事件监听器有这个分发器统一管理,即可完成事件响应。
事件监听器有以下几种:
触摸事件 (EventListenerTouch)
键盘响应事件 (EventListenerKeyboard)
鼠标响应事件 (EventListenerMouse)
自定义事件 (EventListenerCustom)
加速记录事件 (EventListenerAcceleration)
_eventDispatcher的工作由三部分组成:
事件分发器 EventDispatcher
事件类型 EventTouch,EventKeyboard 等
事件监听器 EventListenerTouch,EventListenerKeyboard 等
监听器实现了各种触发后的逻辑,在适当时候由事件分发器分发事件类型,然后调用相应类型的监听器。
这里我们主要来了解Cocos2d3.x版本下的触摸事件中的多点触摸扩大缩放如何实现
[cpp]view plaincopy
voidNewScene::onTouchesBegan(conststd::vector<Touch*>&touches,Event*unused_event){CCLOG("began");}
voidHelloWorld::onTouchesMoved({
//多点
if(touches.size()>1)
{
autodistance1=touches[0]->getPrevIoUsLocation().distance(touches[1]->getPrevIoUsLocation());
autodistance2=touches[0]->getLocation().distance(touches[1]->getLocation());
floatscale=sprite->getScale()*(distance2/distance1);
scale=MIN(2,MAX(0.5,scale));
sprite->setScale(scale);
}
else
{
log("单点");
}
}
voidNewScene::onTouchesEnded("End");}
OK.于Cocos2d的多点触摸的学习就分享到此,有讲得不对的地方还望指出进行探讨互相学习!
原文链接:https://www.f2er.com/cocos2dx/341903.html