如何在Cocos2dx V3.8中获得触摸位置

How to get touch location in Cocos2dx V3.8

本文关键字:触摸 位置 Cocos2dx V3      更新时间:2023-10-16

不支持使用this->setTouchEnabled()

这个链接描述了如何在V3中做到这一点,但是_eventDispatcher现在似乎已经被弃用了。

有谁知道cocos2dx中处理触摸的正确方法吗?编辑:

目前使用:

auto listener = cocos2d::EventListenerTouchOneByOne::create();
listener->setSwallowTouches(true);
listener->onTouchBegan = CC_CALLBACK_2(TouchableArea::touchOccoured, this);
this->getEventDispatcher()->addEventListenerWithSceneGraphPriority(listener, this);

它工作,但我不知道这是否是理想的,虽然

您可以停止/启动单独的事件侦听器:

touchListener->setEnabled(false);

我现在检查了,它工作正常。Cocos2d-x v.3.8.1 .

编辑:
我也不知道是否有更好的方法。但是在cpp-tests、NewEventDispatcherTest.cpp、类PauseResumeTargetTest中,您可以找到这些行:

sprite3->getListener()->setEnabled(false);
_eventDispatcher->pauseEventListenersForTarget(this, true);

_eventDispatcher->resumeEventListenersForTarget(this, true);
sprite3->getListener()->setEnabled(true);

所以,这将是一个正式的方式。