博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于cocos2d-x中CCScrollView添加CCMenu一系列问题的解决方案
阅读量:5255 次
发布时间:2019-06-14

本文共 1472 字,大约阅读时间需要 4 分钟。

上次说到CCScrollView里面添加CCMenu可以解决触摸优先级的问题,但实际上还有问题,滑动是可以滑动了,但滑动一松手,它可能立马响应CCMenu的点击事件,还有,当CCMenu超出可视区域后还是能够点击,这也是让人头疼的问题。问题虽然让人头疼,但解决方案还是有的。我们还是从上篇的CCMenu的扩展类MyMenu入手,我给MyMenu添加moved属性,初始化为false,在ccTouchMove事件里赋值为true,最后在ccTouchEnd里面判断是否move,如果move就不调用CCMenu的ccTouchEnd。这里要注意两点,一是每次ccTouchBegan的时候都要将move设为false,还有ccTouchEnd里面当move为true时,继承CCMenu的属性m_eState要设为kCCMenuStateWaiting,否则它就会在ccTouchBegan的时候return false而进不到ccTouchEnd中了。具体代码:

1 bool MyMenu::ccTouchBegan(CCTouch *pTouch, CCEvent *pEvent){     2     if(visibleRect_.size.width&&visibleRect_.size.height){ 3         if(!visibleRect_.containsPoint(pTouch->getLocation())) 4             return false; 5     } 6     startPosition = pTouch->getLocation();  7     return CCMenu::ccTouchBegan(pTouch,pEvent); 8 } 9 10 void MyMenu::ccTouchMoved(CCTouch *pTouch, CCEvent *pEvent){
12 CCMenu::ccTouchMoved(pTouch,pEvent);13 }14 15 void MyMenu::ccTouchEnded(CCTouch *pTouch, CCEvent *pEvent){16 CCPoint position = pTouch->getLocation(); if(position.y - startPosition.y <= 10 && position.y - startPosition.y >= -10) 17 CCMenu::ccTouchEnded(pTouch,pEvent);18 else19 m_eState = kCCMenuStateWaiting;20 }

大家发现ccTouchBegan里面多了visibleRect_几行代码,这个就是用来判断CCMenu是否在可视区域,当不在可视区域直接return false,这样在超出可视区域点击CCMenu是无效的。当然这个可视区域是具体使用的地方传入的,其实也就是scrollView的viewSize。好啦,至此关于CCScrollView中添加CCMenu造成的一系列问题都得以解决。(在不断的尝试中总结经验,以帮助后面的人更快的上路,)

转载于:https://www.cnblogs.com/yeshanghai/archive/2013/01/05/2846619.html

你可能感兴趣的文章
jQuery.extend 函数详解
查看>>
Tokyo Cabinet和Tokyo Tyrant及PHP扩展包的安装
查看>>
拒绝访问 temp 目录。用来运行 XmlSerializer 的标识“IIS APPPOOL\UGAS”没有访问 temp 目录的足够权限...
查看>>
5.3下午
查看>>
设计模式--单一职责原则
查看>>
Java提高篇——equals()与hashCode()方法详解
查看>>
面向对象编程(十二)——final关键字
查看>>
CentOS搭建FTP服务
查看>>
开博第一天
查看>>
C/C++中的绝对值函数
查看>>
spring集成jedis简单实例
查看>>
Redis
查看>>
第一阶段冲刺第八天
查看>>
css变换与动画详解
查看>>
个人项目-小学四则运算 “软件”之初版
查看>>
Ubuntu 17.04下创建IntelliJ IDEA图标快捷方式
查看>>
StringTokenizer实现字符串分割
查看>>
在Android系统中调用系统前置摄像头
查看>>
hdu 3549 Flow Problem Edmonds_Karp算法求解最大流
查看>>
hdu 5769 Substring 后缀数组 + KMP
查看>>