cocos2dx单点触控

xiaoxiao2021-02-28  109

部分程序代码:

auto listener = EventListenerTouchOneByOne::create(); listener->onTouchBegan = CC_CALLBACK_2(CurveLayer::touchBegan, this); listener->onTouchMoved = CC_CALLBACK_2(CurveLayer::touchMoved, this); listener->onTouchEnded = CC_CALLBACK_2(CurveLayer::touchEnded, this); listener->onTouchCancelled = CC_CALLBACK_2(CurveLayer::touchCancelled,this); //两种都可以 // _eventDispatcher->addEventListenerWithSceneGraphPriority(listener,this); Director::getInstance()->getEventDispatcher()-> addEventListenerWithSceneGraphPriority(listener,this);

回掉函数:

bool CurveLayer::touchBegan(cocos2d::Touch *touch, cocos2d::Event *event) { Vec2 pos=touch->getLocation(); log("touchBegan x:%f,y:%f",pos.x,pos.y); return true;//返回false时,触摸移动、触摸结束不会触发 } void CurveLayer::touchMoved(Touch*touch, Event*event){ Vec2 pos=touch->getLocation(); log("touchMoved x:%f,y:%f",pos.x,pos.y); } } void CurveLayer::touchEnded(Touch*touch, Event*event){ Vec2 pos=touch->getLocation(); log("touchEnded x:%f,y:%f",pos.x,pos.y); } void CurveLayer::touchCancelled(cocos2d::Touch*touch, cocos2d::Event*event) { Vec2 pos=touch->getLocation(); log("touchCancelled x:%f,y:%f",pos.x,pos.y); }

CurveLayer是自己定义的层。

addEventListenerWithSceneGraphPriority该单点触摸时间优先级与所在的节点优先级相同。

相应的还有设置固定优先级等函数详情见: http://api.cocos.com/d2/d1b/classcocos2d_1_1_event_dispatcher.html#a9137cbc969607bc1c0f539155af16f15

设置允许向下传递 listener->setSwallowTouches(false)

转载请注明原文地址: https://www.6miu.com/read-66555.html

最新回复(0)