COCOS 2 DX 3.X TABLEVIEW、SCROLLVIEWでのMENU問題の解決

2237 ワード

当駅の文章はすべて    羅漢果cocos 2 d-x技術ブログ    オリジナル、転載は必ず明らかなところに明記してください.    転載先    【羅漢果cococos 2 d-x技術ブログ】 テキストリンク: http://tech.pigsns.com/thread-228-1-1.html 
最近覇気三国のプロジェクトのピクチャーをするのはすべてネット上から抜いたのです以前もこのような情况があってただ始まってすべてどのように使うことを学ぶのです 2年間仕事をしていて、本当に何も研究したことがありません.何でもどのように使うのに時間がかかります.
1ビューエリアをスライドしてクリックすることもできます
2 menuをクリックするとViewがスライドできなくなる)
最初の問題はmenuのソースコードを変更していくつかの関数の判断関数の原理を追加しました.
touchイベントのタッチポイントがTableView、ScrollViewでfalseに戻るかtrueに戻るかを判断する
ダイレクトコード
//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

onTouchBeganで
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;
}

使用中
itemMenu->setTouchlimit(zhuFangTableView)
現在のTable View、ScrollViewを渡せばいいです.
 
2つ目の質問は簡単に処理しただけです
 auto touchListener = EventListenerTouchOneByOne::create();
       //menuの優先度イベントを下に渡す
touchListener->setSwallowTouches(false);
多くのタッチを処理していません必要な学生があれば自分で追加することができます
以上の内容は、長期的な実戦の試練を経ていないことを記録するだけで、完璧な解決策ではないかもしれません.大神が一二を教えてくれることを願っています.
 
  Jamesの個人ブログへのご支持に感謝します. 
                         【James開発街区】:tech.pigsns.com