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に戻るかを判断する
ダイレクトコード
onTouchBeganで
使用中
itemMenu->setTouchlimit(zhuFangTableView)
現在のTable View、ScrollViewを渡せばいいです.
2つ目の質問は簡単に処理しただけです
auto touchListener = EventListenerTouchOneByOne::create();
//menuの優先度イベントを下に渡す
touchListener->setSwallowTouches(false);
多くのタッチを処理していません必要な学生があれば自分で追加することができます
以上の内容は、長期的な実戦の試練を経ていないことを記録するだけで、完璧な解決策ではないかもしれません.大神が一二を教えてくれることを願っています.
Jamesの個人ブログへのご支持に感謝します.
【James開発街区】:tech.pigsns.com
最近覇気三国のプロジェクトのピクチャーをするのはすべてネット上から抜いたのです以前もこのような情况があってただ始まってすべてどのように使うことを学ぶのです 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