cocos2d 2.x如何吞下CCMenuItem的触摸
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了cocos2d 2.x如何吞下CCMenuItem的触摸相关的知识,希望对你有一定的参考价值。
我需要吞下一个菜单项的触摸。该项目作为孩子添加到SlidingMenuGrid
上
(通过Brandon Reynolds,教程网站现在不知道了,但是这里有一个类似的cocos2d-x版本https://github.com/prsolucoes/cocos2d-x/blob/474d3a537855331ebfa71ea1cf56c1cb14687402/SlidingMenu.h)。
多年来,它一直在为我的老手机工作。但在具有3D触控功能的较新手机上,屏幕太“敏感”。当用户点击某个项目并且甚至只移动一点时,点击事件将被取消并且屏幕开始滚动。
如何让它不那么敏感,或者我可以在用户TouchBegan
项目时吞下触摸(这样项目范围内的TouchedMoved
不会传播到网格)
我试过在ccTouchBegin
中添加一个空的CCMenuItem
函数,但它没有用
-(void)touchBegan:(UITouch *)touch withEvent:(UIEvent *)event
{
// empty implementation to swallow touch
}
通常,如果使用得当,CCMenuItem
已经吞下了触摸。
包含它的CCLayer
不应该取消触摸。您可能直接将CCMenuItem
作为CCLayer
的孩子。你能尝试在两者之间加一个CCMenu
吗?就像是
CCMenu *menu = [CCMenu menuWithItem: item];
menu.position = ccp(0, 0);
[self addChild: menu];
您可以在init函数中为场景添加一个侦听器,并将其swallowtouch属性设置为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;
}
以上是关于cocos2d 2.x如何吞下CCMenuItem的触摸的主要内容,如果未能解决你的问题,请参考以下文章
刚刚开始学COCOS2D,在CCMenu中的菜单按键事件中,有按下的效果,但是没有回调按键指定的函数,求教啊~~
Cocos2d 2.x:我似乎无法更改 3GS 的启动图像!它仍然显示 Cocos2d 橙色默认图像