Io cocos2d 2.x如何吞下CCMenuItem的触感

Io cocos2d 2.x如何吞下CCMenuItem的触感,io,cocos2d-iphone,cocos2d-x,Io,Cocos2d Iphone,Cocos2d X,我需要一个菜单项。该项作为子项添加到滑动菜单栅格上 (布兰登·雷诺兹(Brandon Reynolds)的教程网站现在不知何故不可用,但这里有一个类似的cocos2d-x版本) 多年来,我一直在使用老式手机。但在使用3D触摸屏的较新手机上,屏幕太“敏感”。当用户点击一个项目,移动一点,点击事件将被取消,屏幕开始滚动 如何使其不那么敏感,或者当用户touchStart项目时,我可以吞下触摸(这样项目范围内的TouchedMoved不会传播到网格) 我曾尝试在CCMenuItem中添加一个空的cct

我需要一个菜单项。该项作为子项添加到
滑动菜单栅格上

(布兰登·雷诺兹(Brandon Reynolds)的教程网站现在不知何故不可用,但这里有一个类似的cocos2d-x版本)

多年来,我一直在使用老式手机。但在使用3D触摸屏的较新手机上,屏幕太“敏感”。当用户点击一个项目,移动一点,点击事件将被取消,屏幕开始滚动

如何使其不那么敏感,或者当用户
touchStart
项目时,我可以吞下触摸(这样项目范围内的
TouchedMoved
不会传播到网格)

我曾尝试在
CCMenuItem
中添加一个空的
cctouchbeagin
函数,但没有成功

-(void)touchBegan:(UITouch *)touch withEvent:(UIEvent *)event
{
    // empty implementation to swallow touch
}

可以在init函数中将侦听器添加到场景中,并将其燕子触摸属性设置为true

auto listener = EventListenerTouchOneByOne::create();
listener->setSwallowTouches(true);
listener->onTouchBegan = CC_CALLBACK_2(YourScene::onTouchBegan, this);
listener->onTouchEnded = CC_CALLBACK_2(YourScene::onTouchEnded, this);
_eventDispatcher->addEventListenerWithSceneGraphPriority(listener, this);
并在以下功能中处理触摸事件

bool YourScene::onTouchEnded(cocos2d::Touch *touch, cocos2d::Event *event)
{
    //on touch ended code
    return false;
}

bool YourScene::onTouchBegan(cocos2d::Touch *touch, cocos2d::Event *event)
{
    //on touch began code
    return true;
}

正常情况下,
CCMenuItem
如果使用正确,会吞下触摸

包含它的
CCLayer
不应取消触摸。您可能直接将
CCMenuItem
作为
CCLayer
的子项。您能否尝试在两者之间添加
CCMenu
?差不多

CCMenu *menu = [CCMenu menuWithItem: item];
menu.position = ccp(0, 0);
[self addChild: menu];