請問cocos大俠們,我在一個layer里加載了一個pageview,然后向pageview中addpage了另一個layer,改layer中有一個listview,怎么處理pageview翻頁時,不觸發listview的事件,listview下拉滑動時不觸發pageview的翻頁事件,我是lua做的,有沒有大俠指導一下,困擾我幾天了,非常感謝!
uj5u.com熱心網友回復:
沒有大俠指導嗎?大俠都很忙?????uj5u.com熱心網友回復:
把listview和pageview設定為禁止觸摸,寫個觸摸事件系結在layout上,在layout的觸摸監聽事件里判斷,在layout的touchbegin事件里分別呼叫listview和pageview的touchbegin事件;在layout的touchmove里比較移動差值的x和y的比,大于1時在layout的touchmove里呼叫pageview的touchmove事件,小于1時呼叫listview的touchmove;最后在layout的touchend事件里用touchmove里呼叫的物件去呼叫touchend事件,進行點擊移動后的慣性處理;auto listener = EventListenerTouchOneByOne::create();
listener->onTouchBegan = [this, layout ](Touch* touch, Event* event)
{
auto touchPoint = touch->getLocation();
touchPoint = this->convertToNodeSpace(touchPoint);
auto box = layout->getBoundingBox();
if (box.containsPoint(touchPoint))
{
curPage = pageView->getCurPageIndex();
listView.at(curPage)->onTouchBegan(touch, event);
pageView->onTouchBegan(touch, event);
//判斷上下移動和左右翻頁的彈性運動是執行完畢
auto listViewContainerPosY = listView.at(curPage)->getInnerContainerPosition().y;
auto pageViewContainerPosX = pageView->getInnerContainerPosition().x + curPage * pageView->getContentSize().width;
if (operationFlag == 1 && pageViewContainerPosX != 0)
{
operationFlag = 1;
}
else if (operationFlag == 2 && listViewContainerPosY != 0)
{
operationFlag = 2;
}
else
{
operationFlag = 0;
}
return true;
}
return false;
};
listener->onTouchMoved = [this](Touch* touch, Event* event)
{
auto delta = touch->getDelta();
if (operationFlag == 0)
{
if (abs(delta.x / delta.y) >= 1)
{
operationFlag = 1;
}
else
{
operationFlag = 2;
}
}
if (operationFlag == 1)
{
pageView->onTouchMoved(touch, event);
}
else if (operationFlag == 2)
{
listView.at(curPage)->onTouchMoved(touch, event);
}
};
listener->onTouchEnded = [this](Touch* touch, Event* event)
{
if (operationFlag == 1)
{
pageView->onTouchEnded(touch, event);
}
else if (operationFlag == 2)
{
listView.at(curPage)->onTouchEnded(touch, event);
}
};
_eventDispatcher->addEventListenerWithSceneGraphPriority(listener, layout);
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/129228.html
標籤:Cocos2d-x
