本站文章均为 罗汉果 cocos2d-x技术博客 原创,转载务必在明显处注明:
转载自 【罗汉果 cocos2d-x技术博客】 原文连接: http://tech.pigsns.com/thread-228-1-1.html html
问题有两个(我主要解决的就这两个)最近在作霸气三国的项目图片都是从网上拔下来的 之前也有这样的状况 只是开始都是学习怎么用 工做两年了 没有真正的钻研过什么都是在如何用上花费时间node
1滑出View区域还可点击函数
2致使点击menu后View不能滑动)学习
第一个问题我是改了menu的源码 添加了 几个函数 判断函数 原理就是this
判断touch事件的触摸点是否是在TableView 、ScrollView上来返回false仍是truespa
直接上代码code
//luohanguo void Menu::setTouchlimit(cocos2d::Node *node) { m_szTouchLimitNode=node; m_bTouchLimit=true; } bool Menu::isInTouchLimit(Touch* touch) { if(m_bTouchLimit) { Vec2 touchLocation = touch->getLocation(); Vec2 local = m_szTouchLimitNode->convertToNodeSpace(touchLocation); Rect r = m_szTouchLimitNode->getBoundingBox(); r.origin = Vec2::ZERO; if (!r.containsPoint(local)) { return true; } } return false; } //luohanguo
在onTouchBeganorm
bool Menu::onTouchBegan(Touch* touch, Event* event) { if (_state != Menu::State::WAITING || ! _visible || !_enabled) { return false; } for (Node *c = this->_parent; c != nullptr; c = c->getParent()) { if (c->isVisible() == false) { return false; } } //luohanguo if(isInTouchLimit(touch)) { return false; } //luohanguo _selectedItem = this->getItemForTouch(touch); if (_selectedItem) { _state = Menu::State::TRACKING_TOUCH; _selectedItem->selected(); return true; } return false; }
在使用过程当中htm
itemMenu->setTouchlimit(zhuFangTableView)事件
把当前的TableView 、ScrollView传过去就好了。
第二个问难我只是简单的处理了下
auto touchListener = EventListenerTouchOneByOne::create();
//修改menu的优先级事件向下层传递
touchListener->setSwallowTouches(false);
没有处理多点触摸 若是有须要的同窗能够本身添加
以上内容我只作记录 没有通过长期的实战考验 可能不是完美的解决方案。但愿大神能指点一二 。
还要感谢你们对James的我的博客的支持:
【James开发街区】:tech.pigsns.com