[求助]关于touch事件优先级问题。

957
做一个类似于“小鸟”这种关卡切换页面。我将当前页面的优先设置为最高
并在下面三个方法中处理了划屏功能
virtualbool ccTouchBegan(CCTouch *pTouch,CCEvent *pEvent);virtualvoid ccTouchEnded(CCTouch *pTouch,CCEvent *pEvent);//设置页面的优先级高于菜单voidStory::registerWithTouchDispatcher(void){ CCTouchDispatcher::sharedDispatcher()->addTargetedDelegate(this,-256, false);}
bool ccTouchBegan(CCTouch *pTouch,CCEvent *pEvent){ return true;}调试后发现当用户点击着菜单进行划屏操作时会跳转到具体的关卡页面。
请问如何才能让用户划屏时不会触发菜单的操作?

CCScrollView及CCScrollView与CCMenu问题【终结篇】:http://www.firedragonpzy.com.cn/index.php/archives/3111 看这个……

— Begin quote from ____

super_user_zyc 发表于 2013-3-7 09:45 url

重写一个menu,触摸时判断滑动距离,超过一个值就认为是滑屏事件,就不响应绑定函数。小于这个数值的话就认 …

— End quote

朋友,按照你说的做了.继承CCMenu派生了LevelMenu
void LevelMenu::ccTouchEnded(CCTouch* touch, CCEvent* event)
{
CCPoint touchLocation = touch->getLocation();
Pt2 = touchLocation;
CCMenuItem* m_pSelectedItem;
m_pSelectedItem = this->itemForTouch(touch);
if(abs(Pt2.x-Pt1.x)<10)
{
if (m_pSelectedItem)
{
m_pSelectedItem->selected();

}
}
}
如何手动触发menu的事件?

谢谢大家问题解决啦…

— Begin quote from ____

zhaozigeng 发表于 2013-3-7 14:33 url

朋友,按照你说的做了.继承CCMenu派生了LevelMenu
void LevelMenu::ccTouchEnded(CCTouch* touch, CCEvent …

— End quote

menu的点击机制是,在touchbegan和move里判断某一个item是否被选中,如果有就把item的指针值给一个成员变量指针,在end里检查那个指针是否为NULL,如果为NULL就是没有被选中的,不为NULL就是有,就调用其绑定的函数。所以end不用重写,我们只要在began和move确定是否要选中一个item就行。我的做法是,began记录一个点。move里的点和这个点比较,如果item被点击(menu默认条件)并且这个点和began记录点的距离小于指定值(我们加的条件,超过不为选中,判定为滑屏)才判定为选中,并赋值为item的值,否则为NULL, 这样让end去判断是否执行绑定函数。打字好累,{:soso_e127:},语言表达不好,说这么多不知你能不能懂。我有代码并且是我写的,但是公司游戏的不是个人的,不能贴给你,自己研究吧,祝你好运!

大家帮忙.谢谢

重写一个menu,触摸时判断滑动距离,超过一个值就认为是滑屏事件,就不响应绑定函数。小于这个数值的话就认为是点击menu,响应绑定函数!

CCScrollView及CCScrollView与CCMenu问题【终结篇】:http://www.firedragonpzy.com.cn/index.php/archives/3111 看这个……

— Begin quote from ____

zhaozigeng 发表于 2013-3-7 14:33 url

朋友,按照你说的做了.继承CCMenu派生了LevelMenu
void LevelMenu::ccTouchEnded(CCTouch* touch, CCEvent …

— End quote

menu的点击机制是,在touchbegan和move里判断某一个item是否被选中,如果有就把item的指针值给一个成员变量指针,在end里检查那个指针是否为NULL,如果为NULL就是没有被选中的,不为NULL就是有,就调用其绑定的函数。所以end不用重写,我们只要在began和move确定是否要选中一个item就行。我的做法是,began记录一个点。move里的点和这个点比较,如果item被点击(menu默认条件)并且这个点和began记录点的距离小于指定值(我们加的条件,超过不为选中,判定为滑屏)才判定为选中,并赋值为item的值,否则为NULL, 这样让end去判断是否执行绑定函数。打字好累,{:soso_e127:},语言表达不好,说这么多不知你能不能懂。我有代码并且是我写的,但是公司游戏的不是个人的,不能贴给你,自己研究吧,祝你好运!

重写一个menu,触摸时判断滑动距离,超过一个值就认为是滑屏事件,就不响应绑定函数。小于这个数值的话就认为是点击menu,响应绑定函数!