本站文章均爲 羅漢果 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