mirror of https://github.com/axmolengine/axmol.git
issue #5183, refactor UIScrollView
This commit is contained in:
parent
ee24e137f7
commit
a9e1c50897
|
@ -858,319 +858,345 @@ bool ScrollView::checkCustomScrollDestination(float* touchOffsetX, float* touchO
|
||||||
return scrollenabled;
|
return scrollenabled;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool ScrollView::scrollChilderVertical(float touchOffsetX, float touchOffsetY)
|
||||||
|
{
|
||||||
|
bool scrollenabled = true;
|
||||||
|
|
||||||
|
float realOffset = touchOffsetY;
|
||||||
|
if (_bounceEnabled)
|
||||||
|
{
|
||||||
|
float icBottomPos = _innerContainer->getBottomBoundary();
|
||||||
|
if (icBottomPos + touchOffsetY >= _bounceBottomBoundary)
|
||||||
|
{
|
||||||
|
realOffset = _bounceBottomBoundary - icBottomPos;
|
||||||
|
scrollToBottomEvent();
|
||||||
|
scrollenabled = false;
|
||||||
|
}
|
||||||
|
float icTopPos = _innerContainer->getTopBoundary();
|
||||||
|
if (icTopPos + touchOffsetY <= _bounceTopBoundary)
|
||||||
|
{
|
||||||
|
realOffset = _bounceTopBoundary - icTopPos;
|
||||||
|
scrollToTopEvent();
|
||||||
|
scrollenabled = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
float icBottomPos = _innerContainer->getBottomBoundary();
|
||||||
|
if (icBottomPos + touchOffsetY >= _bottomBoundary)
|
||||||
|
{
|
||||||
|
realOffset = _bottomBoundary - icBottomPos;
|
||||||
|
scrollToBottomEvent();
|
||||||
|
scrollenabled = false;
|
||||||
|
}
|
||||||
|
float icTopPos = _innerContainer->getTopBoundary();
|
||||||
|
if (icTopPos + touchOffsetY <= _topBoundary)
|
||||||
|
{
|
||||||
|
realOffset = _topBoundary - icTopPos;
|
||||||
|
scrollToTopEvent();
|
||||||
|
scrollenabled = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
moveChildren(0.0f, realOffset);
|
||||||
|
|
||||||
|
return scrollenabled;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool ScrollView::scrollChilderHorizontal(float touchOffsetX, float touchOffsetY)
|
||||||
|
{
|
||||||
|
bool scrollenabled = true;
|
||||||
|
|
||||||
|
float realOffset = touchOffsetX;
|
||||||
|
if (_bounceEnabled)
|
||||||
|
{
|
||||||
|
float icRightPos = _innerContainer->getRightBoundary();
|
||||||
|
if (icRightPos + touchOffsetX <= _bounceRightBoundary)
|
||||||
|
{
|
||||||
|
realOffset = _bounceRightBoundary - icRightPos;
|
||||||
|
scrollToRightEvent();
|
||||||
|
scrollenabled = false;
|
||||||
|
}
|
||||||
|
float icLeftPos = _innerContainer->getLeftBoundary();
|
||||||
|
if (icLeftPos + touchOffsetX >= _bounceLeftBoundary)
|
||||||
|
{
|
||||||
|
realOffset = _bounceLeftBoundary - icLeftPos;
|
||||||
|
scrollToLeftEvent();
|
||||||
|
scrollenabled = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
float icRightPos = _innerContainer->getRightBoundary();
|
||||||
|
if (icRightPos + touchOffsetX <= _rightBoundary)
|
||||||
|
{
|
||||||
|
realOffset = _rightBoundary - icRightPos;
|
||||||
|
scrollToRightEvent();
|
||||||
|
scrollenabled = false;
|
||||||
|
}
|
||||||
|
float icLeftPos = _innerContainer->getLeftBoundary();
|
||||||
|
if (icLeftPos + touchOffsetX >= _leftBoundary)
|
||||||
|
{
|
||||||
|
realOffset = _leftBoundary - icLeftPos;
|
||||||
|
scrollToLeftEvent();
|
||||||
|
scrollenabled = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
moveChildren(realOffset, 0.0f);
|
||||||
|
|
||||||
|
return scrollenabled;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool ScrollView::scrollChilderBoth(float touchOffsetX, float touchOffsetY)
|
||||||
|
{
|
||||||
|
bool scrollenabled = true;
|
||||||
|
float realOffsetX = touchOffsetX;
|
||||||
|
float realOffsetY = touchOffsetY;
|
||||||
|
if (_bounceEnabled)
|
||||||
|
{
|
||||||
|
if (touchOffsetX > 0.0f && touchOffsetY > 0.0f) // up right
|
||||||
|
{
|
||||||
|
float icLeftPos = _innerContainer->getLeftBoundary();
|
||||||
|
if (icLeftPos + touchOffsetX >= _bounceLeftBoundary)
|
||||||
|
{
|
||||||
|
realOffsetX = _bounceLeftBoundary - icLeftPos;
|
||||||
|
scrollToLeftEvent();
|
||||||
|
scrollenabled = false;
|
||||||
|
}
|
||||||
|
float icBottomPos = _innerContainer->getBottomBoundary();
|
||||||
|
if (icBottomPos + touchOffsetY >= _bounceBottomBoundary)
|
||||||
|
{
|
||||||
|
realOffsetY = _bounceBottomBoundary - icBottomPos;
|
||||||
|
scrollToBottomEvent();
|
||||||
|
scrollenabled = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (touchOffsetX < 0.0f && touchOffsetY > 0.0f) // up left
|
||||||
|
{
|
||||||
|
float icRightPos = _innerContainer->getRightBoundary();
|
||||||
|
if (icRightPos + touchOffsetX <= _bounceRightBoundary)
|
||||||
|
{
|
||||||
|
realOffsetX = _bounceRightBoundary - icRightPos;
|
||||||
|
scrollToRightEvent();
|
||||||
|
scrollenabled = false;
|
||||||
|
}
|
||||||
|
float icBottomPos = _innerContainer->getBottomBoundary();
|
||||||
|
if (icBottomPos + touchOffsetY >= _bounceBottomBoundary)
|
||||||
|
{
|
||||||
|
realOffsetY = _bounceBottomBoundary - icBottomPos;
|
||||||
|
scrollToBottomEvent();
|
||||||
|
scrollenabled = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (touchOffsetX < 0.0f && touchOffsetY < 0.0f) // down left
|
||||||
|
{
|
||||||
|
float icRightPos = _innerContainer->getRightBoundary();
|
||||||
|
if (icRightPos + touchOffsetX <= _bounceRightBoundary)
|
||||||
|
{
|
||||||
|
realOffsetX = _bounceRightBoundary - icRightPos;
|
||||||
|
scrollToRightEvent();
|
||||||
|
scrollenabled = false;
|
||||||
|
}
|
||||||
|
float icTopPos = _innerContainer->getTopBoundary();
|
||||||
|
if (icTopPos + touchOffsetY <= _bounceTopBoundary)
|
||||||
|
{
|
||||||
|
realOffsetY = _bounceTopBoundary - icTopPos;
|
||||||
|
scrollToTopEvent();
|
||||||
|
scrollenabled = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (touchOffsetX > 0.0f && touchOffsetY < 0.0f) // down right
|
||||||
|
{
|
||||||
|
float icLeftPos = _innerContainer->getLeftBoundary();
|
||||||
|
if (icLeftPos + touchOffsetX >= _bounceLeftBoundary)
|
||||||
|
{
|
||||||
|
realOffsetX = _bounceLeftBoundary - icLeftPos;
|
||||||
|
scrollToLeftEvent();
|
||||||
|
scrollenabled = false;
|
||||||
|
}
|
||||||
|
float icTopPos = _innerContainer->getTopBoundary();
|
||||||
|
if (icTopPos + touchOffsetY <= _bounceTopBoundary)
|
||||||
|
{
|
||||||
|
realOffsetY = _bounceTopBoundary - icTopPos;
|
||||||
|
scrollToTopEvent();
|
||||||
|
scrollenabled = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (touchOffsetX == 0.0f && touchOffsetY > 0.0f) // up
|
||||||
|
{
|
||||||
|
float icBottomPos = _innerContainer->getBottomBoundary();
|
||||||
|
if (icBottomPos + touchOffsetY >= _bounceBottomBoundary)
|
||||||
|
{
|
||||||
|
realOffsetY = _bounceBottomBoundary - icBottomPos;
|
||||||
|
scrollToBottomEvent();
|
||||||
|
scrollenabled = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (touchOffsetX < 0.0f && touchOffsetY == 0.0f) // left
|
||||||
|
{
|
||||||
|
float icRightPos = _innerContainer->getRightBoundary();
|
||||||
|
if (icRightPos + touchOffsetX <= _bounceRightBoundary)
|
||||||
|
{
|
||||||
|
realOffsetX = _bounceRightBoundary - icRightPos;
|
||||||
|
scrollToRightEvent();
|
||||||
|
scrollenabled = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (touchOffsetX == 0.0f && touchOffsetY < 0.0f) // down
|
||||||
|
{
|
||||||
|
float icTopPos = _innerContainer->getTopBoundary();
|
||||||
|
if (icTopPos + touchOffsetY <= _bounceTopBoundary)
|
||||||
|
{
|
||||||
|
realOffsetY = _bounceTopBoundary - icTopPos;
|
||||||
|
scrollToTopEvent();
|
||||||
|
scrollenabled = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (touchOffsetX > 0.0f && touchOffsetY == 0.0f) // right
|
||||||
|
{
|
||||||
|
float icLeftPos = _innerContainer->getLeftBoundary();
|
||||||
|
if (icLeftPos + touchOffsetX >= _bounceLeftBoundary)
|
||||||
|
{
|
||||||
|
realOffsetX = _bounceLeftBoundary - icLeftPos;
|
||||||
|
scrollToLeftEvent();
|
||||||
|
scrollenabled = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (touchOffsetX > 0.0f && touchOffsetY > 0.0f) // up right
|
||||||
|
{
|
||||||
|
float icLeftPos = _innerContainer->getLeftBoundary();
|
||||||
|
if (icLeftPos + touchOffsetX >= _leftBoundary)
|
||||||
|
{
|
||||||
|
realOffsetX = _leftBoundary - icLeftPos;
|
||||||
|
scrollToLeftEvent();
|
||||||
|
scrollenabled = false;
|
||||||
|
}
|
||||||
|
float icBottomPos = _innerContainer->getBottomBoundary();
|
||||||
|
if (icBottomPos + touchOffsetY >= _bottomBoundary)
|
||||||
|
{
|
||||||
|
realOffsetY = _bottomBoundary - icBottomPos;
|
||||||
|
scrollToBottomEvent();
|
||||||
|
scrollenabled = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (touchOffsetX < 0.0f && touchOffsetY > 0.0f) // up left
|
||||||
|
{
|
||||||
|
float icRightPos = _innerContainer->getRightBoundary();
|
||||||
|
if (icRightPos + touchOffsetX <= _rightBoundary)
|
||||||
|
{
|
||||||
|
realOffsetX = _rightBoundary - icRightPos;
|
||||||
|
scrollToRightEvent();
|
||||||
|
scrollenabled = false;
|
||||||
|
}
|
||||||
|
float icBottomPos = _innerContainer->getBottomBoundary();
|
||||||
|
if (icBottomPos + touchOffsetY >= _bottomBoundary)
|
||||||
|
{
|
||||||
|
realOffsetY = _bottomBoundary - icBottomPos;
|
||||||
|
scrollToBottomEvent();
|
||||||
|
scrollenabled = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (touchOffsetX < 0.0f && touchOffsetY < 0.0f) // down left
|
||||||
|
{
|
||||||
|
float icRightPos = _innerContainer->getRightBoundary();
|
||||||
|
if (icRightPos + touchOffsetX <= _rightBoundary)
|
||||||
|
{
|
||||||
|
realOffsetX = _rightBoundary - icRightPos;
|
||||||
|
scrollToRightEvent();
|
||||||
|
scrollenabled = false;
|
||||||
|
}
|
||||||
|
float icTopPos = _innerContainer->getTopBoundary();
|
||||||
|
if (icTopPos + touchOffsetY <= _topBoundary)
|
||||||
|
{
|
||||||
|
realOffsetY = _topBoundary - icTopPos;
|
||||||
|
scrollToTopEvent();
|
||||||
|
scrollenabled = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (touchOffsetX > 0.0f && touchOffsetY < 0.0f) // down right
|
||||||
|
{
|
||||||
|
float icLeftPos = _innerContainer->getLeftBoundary();
|
||||||
|
if (icLeftPos + touchOffsetX >= _leftBoundary)
|
||||||
|
{
|
||||||
|
realOffsetX = _leftBoundary - icLeftPos;
|
||||||
|
scrollToLeftEvent();
|
||||||
|
scrollenabled = false;
|
||||||
|
}
|
||||||
|
float icTopPos = _innerContainer->getTopBoundary();
|
||||||
|
if (icTopPos + touchOffsetY <= _topBoundary)
|
||||||
|
{
|
||||||
|
realOffsetY = _topBoundary - icTopPos;
|
||||||
|
scrollToTopEvent();
|
||||||
|
scrollenabled = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (touchOffsetX == 0.0f && touchOffsetY > 0.0f) // up
|
||||||
|
{
|
||||||
|
float icBottomPos = _innerContainer->getBottomBoundary();
|
||||||
|
if (icBottomPos + touchOffsetY >= _bottomBoundary)
|
||||||
|
{
|
||||||
|
realOffsetY = _bottomBoundary - icBottomPos;
|
||||||
|
scrollToBottomEvent();
|
||||||
|
scrollenabled = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (touchOffsetX < 0.0f && touchOffsetY == 0.0f) // left
|
||||||
|
{
|
||||||
|
float icRightPos = _innerContainer->getRightBoundary();
|
||||||
|
if (icRightPos + touchOffsetX <= _rightBoundary)
|
||||||
|
{
|
||||||
|
realOffsetX = _rightBoundary - icRightPos;
|
||||||
|
scrollToRightEvent();
|
||||||
|
scrollenabled = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (touchOffsetX == 0.0f && touchOffsetY < 0.0f) // down
|
||||||
|
{
|
||||||
|
float icTopPos = _innerContainer->getTopBoundary();
|
||||||
|
if (icTopPos + touchOffsetY <= _topBoundary)
|
||||||
|
{
|
||||||
|
realOffsetY = _topBoundary - icTopPos;
|
||||||
|
scrollToTopEvent();
|
||||||
|
scrollenabled = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (touchOffsetX > 0.0f && touchOffsetY == 0.0f) // right
|
||||||
|
{
|
||||||
|
float icLeftPos = _innerContainer->getLeftBoundary();
|
||||||
|
if (icLeftPos + touchOffsetX >= _leftBoundary)
|
||||||
|
{
|
||||||
|
realOffsetX = _leftBoundary - icLeftPos;
|
||||||
|
scrollToLeftEvent();
|
||||||
|
scrollenabled = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
moveChildren(realOffsetX, realOffsetY);
|
||||||
|
return scrollenabled;
|
||||||
|
}
|
||||||
|
|
||||||
bool ScrollView::scrollChildren(float touchOffsetX, float touchOffsetY)
|
bool ScrollView::scrollChildren(float touchOffsetX, float touchOffsetY)
|
||||||
{
|
{
|
||||||
bool scrollenabled = true;
|
bool scrollenabled = true;
|
||||||
scrollingEvent();
|
scrollingEvent();
|
||||||
|
|
||||||
switch (_direction)
|
switch (_direction)
|
||||||
{
|
{
|
||||||
case Direction::VERTICAL: // vertical
|
case Direction::VERTICAL: // vertical
|
||||||
{
|
{
|
||||||
float realOffset = touchOffsetY;
|
scrollenabled = this->scrollChilderVertical(touchOffsetX, touchOffsetY);
|
||||||
if (_bounceEnabled)
|
|
||||||
{
|
|
||||||
float icBottomPos = _innerContainer->getBottomBoundary();
|
|
||||||
if (icBottomPos + touchOffsetY >= _bounceBottomBoundary)
|
|
||||||
{
|
|
||||||
realOffset = _bounceBottomBoundary - icBottomPos;
|
|
||||||
scrollToBottomEvent();
|
|
||||||
scrollenabled = false;
|
|
||||||
}
|
|
||||||
float icTopPos = _innerContainer->getTopBoundary();
|
|
||||||
if (icTopPos + touchOffsetY <= _bounceTopBoundary)
|
|
||||||
{
|
|
||||||
realOffset = _bounceTopBoundary - icTopPos;
|
|
||||||
scrollToTopEvent();
|
|
||||||
scrollenabled = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
float icBottomPos = _innerContainer->getBottomBoundary();
|
|
||||||
if (icBottomPos + touchOffsetY >= _bottomBoundary)
|
|
||||||
{
|
|
||||||
realOffset = _bottomBoundary - icBottomPos;
|
|
||||||
scrollToBottomEvent();
|
|
||||||
scrollenabled = false;
|
|
||||||
}
|
|
||||||
float icTopPos = _innerContainer->getTopBoundary();
|
|
||||||
if (icTopPos + touchOffsetY <= _topBoundary)
|
|
||||||
{
|
|
||||||
realOffset = _topBoundary - icTopPos;
|
|
||||||
scrollToTopEvent();
|
|
||||||
scrollenabled = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
moveChildren(0.0f, realOffset);
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case Direction::HORIZONTAL: // horizontal
|
case Direction::HORIZONTAL: // horizontal
|
||||||
{
|
{
|
||||||
float realOffset = touchOffsetX;
|
scrollenabled = this->scrollChilderHorizontal(touchOffsetX, touchOffsetY);
|
||||||
if (_bounceEnabled)
|
|
||||||
{
|
|
||||||
float icRightPos = _innerContainer->getRightBoundary();
|
|
||||||
if (icRightPos + touchOffsetX <= _bounceRightBoundary)
|
|
||||||
{
|
|
||||||
realOffset = _bounceRightBoundary - icRightPos;
|
|
||||||
scrollToRightEvent();
|
|
||||||
scrollenabled = false;
|
|
||||||
}
|
|
||||||
float icLeftPos = _innerContainer->getLeftBoundary();
|
|
||||||
if (icLeftPos + touchOffsetX >= _bounceLeftBoundary)
|
|
||||||
{
|
|
||||||
realOffset = _bounceLeftBoundary - icLeftPos;
|
|
||||||
scrollToLeftEvent();
|
|
||||||
scrollenabled = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
float icRightPos = _innerContainer->getRightBoundary();
|
|
||||||
if (icRightPos + touchOffsetX <= _rightBoundary)
|
|
||||||
{
|
|
||||||
realOffset = _rightBoundary - icRightPos;
|
|
||||||
scrollToRightEvent();
|
|
||||||
scrollenabled = false;
|
|
||||||
}
|
|
||||||
float icLeftPos = _innerContainer->getLeftBoundary();
|
|
||||||
if (icLeftPos + touchOffsetX >= _leftBoundary)
|
|
||||||
{
|
|
||||||
realOffset = _leftBoundary - icLeftPos;
|
|
||||||
scrollToLeftEvent();
|
|
||||||
scrollenabled = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
moveChildren(realOffset, 0.0f);
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case Direction::BOTH:
|
case Direction::BOTH:
|
||||||
{
|
{
|
||||||
float realOffsetX = touchOffsetX;
|
scrollenabled = this->scrollChilderBoth(touchOffsetX, touchOffsetY);
|
||||||
float realOffsetY = touchOffsetY;
|
|
||||||
if (_bounceEnabled)
|
|
||||||
{
|
|
||||||
if (touchOffsetX > 0.0f && touchOffsetY > 0.0f) // up right
|
|
||||||
{
|
|
||||||
float icLeftPos = _innerContainer->getLeftBoundary();
|
|
||||||
if (icLeftPos + touchOffsetX >= _bounceLeftBoundary)
|
|
||||||
{
|
|
||||||
realOffsetX = _bounceLeftBoundary - icLeftPos;
|
|
||||||
scrollToLeftEvent();
|
|
||||||
scrollenabled = false;
|
|
||||||
}
|
|
||||||
float icBottomPos = _innerContainer->getBottomBoundary();
|
|
||||||
if (icBottomPos + touchOffsetY >= _bounceBottomBoundary)
|
|
||||||
{
|
|
||||||
realOffsetY = _bounceBottomBoundary - icBottomPos;
|
|
||||||
scrollToBottomEvent();
|
|
||||||
scrollenabled = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (touchOffsetX < 0.0f && touchOffsetY > 0.0f) // up left
|
|
||||||
{
|
|
||||||
float icRightPos = _innerContainer->getRightBoundary();
|
|
||||||
if (icRightPos + touchOffsetX <= _bounceRightBoundary)
|
|
||||||
{
|
|
||||||
realOffsetX = _bounceRightBoundary - icRightPos;
|
|
||||||
scrollToRightEvent();
|
|
||||||
scrollenabled = false;
|
|
||||||
}
|
|
||||||
float icBottomPos = _innerContainer->getBottomBoundary();
|
|
||||||
if (icBottomPos + touchOffsetY >= _bounceBottomBoundary)
|
|
||||||
{
|
|
||||||
realOffsetY = _bounceBottomBoundary - icBottomPos;
|
|
||||||
scrollToBottomEvent();
|
|
||||||
scrollenabled = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (touchOffsetX < 0.0f && touchOffsetY < 0.0f) // down left
|
|
||||||
{
|
|
||||||
float icRightPos = _innerContainer->getRightBoundary();
|
|
||||||
if (icRightPos + touchOffsetX <= _bounceRightBoundary)
|
|
||||||
{
|
|
||||||
realOffsetX = _bounceRightBoundary - icRightPos;
|
|
||||||
scrollToRightEvent();
|
|
||||||
scrollenabled = false;
|
|
||||||
}
|
|
||||||
float icTopPos = _innerContainer->getTopBoundary();
|
|
||||||
if (icTopPos + touchOffsetY <= _bounceTopBoundary)
|
|
||||||
{
|
|
||||||
realOffsetY = _bounceTopBoundary - icTopPos;
|
|
||||||
scrollToTopEvent();
|
|
||||||
scrollenabled = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (touchOffsetX > 0.0f && touchOffsetY < 0.0f) // down right
|
|
||||||
{
|
|
||||||
float icLeftPos = _innerContainer->getLeftBoundary();
|
|
||||||
if (icLeftPos + touchOffsetX >= _bounceLeftBoundary)
|
|
||||||
{
|
|
||||||
realOffsetX = _bounceLeftBoundary - icLeftPos;
|
|
||||||
scrollToLeftEvent();
|
|
||||||
scrollenabled = false;
|
|
||||||
}
|
|
||||||
float icTopPos = _innerContainer->getTopBoundary();
|
|
||||||
if (icTopPos + touchOffsetY <= _bounceTopBoundary)
|
|
||||||
{
|
|
||||||
realOffsetY = _bounceTopBoundary - icTopPos;
|
|
||||||
scrollToTopEvent();
|
|
||||||
scrollenabled = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (touchOffsetX == 0.0f && touchOffsetY > 0.0f) // up
|
|
||||||
{
|
|
||||||
float icBottomPos = _innerContainer->getBottomBoundary();
|
|
||||||
if (icBottomPos + touchOffsetY >= _bounceBottomBoundary)
|
|
||||||
{
|
|
||||||
realOffsetY = _bounceBottomBoundary - icBottomPos;
|
|
||||||
scrollToBottomEvent();
|
|
||||||
scrollenabled = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (touchOffsetX < 0.0f && touchOffsetY == 0.0f) // left
|
|
||||||
{
|
|
||||||
float icRightPos = _innerContainer->getRightBoundary();
|
|
||||||
if (icRightPos + touchOffsetX <= _bounceRightBoundary)
|
|
||||||
{
|
|
||||||
realOffsetX = _bounceRightBoundary - icRightPos;
|
|
||||||
scrollToRightEvent();
|
|
||||||
scrollenabled = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (touchOffsetX == 0.0f && touchOffsetY < 0.0f) // down
|
|
||||||
{
|
|
||||||
float icTopPos = _innerContainer->getTopBoundary();
|
|
||||||
if (icTopPos + touchOffsetY <= _bounceTopBoundary)
|
|
||||||
{
|
|
||||||
realOffsetY = _bounceTopBoundary - icTopPos;
|
|
||||||
scrollToTopEvent();
|
|
||||||
scrollenabled = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (touchOffsetX > 0.0f && touchOffsetY == 0.0f) // right
|
|
||||||
{
|
|
||||||
float icLeftPos = _innerContainer->getLeftBoundary();
|
|
||||||
if (icLeftPos + touchOffsetX >= _bounceLeftBoundary)
|
|
||||||
{
|
|
||||||
realOffsetX = _bounceLeftBoundary - icLeftPos;
|
|
||||||
scrollToLeftEvent();
|
|
||||||
scrollenabled = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (touchOffsetX > 0.0f && touchOffsetY > 0.0f) // up right
|
|
||||||
{
|
|
||||||
float icLeftPos = _innerContainer->getLeftBoundary();
|
|
||||||
if (icLeftPos + touchOffsetX >= _leftBoundary)
|
|
||||||
{
|
|
||||||
realOffsetX = _leftBoundary - icLeftPos;
|
|
||||||
scrollToLeftEvent();
|
|
||||||
scrollenabled = false;
|
|
||||||
}
|
|
||||||
float icBottomPos = _innerContainer->getBottomBoundary();
|
|
||||||
if (icBottomPos + touchOffsetY >= _bottomBoundary)
|
|
||||||
{
|
|
||||||
realOffsetY = _bottomBoundary - icBottomPos;
|
|
||||||
scrollToBottomEvent();
|
|
||||||
scrollenabled = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (touchOffsetX < 0.0f && touchOffsetY > 0.0f) // up left
|
|
||||||
{
|
|
||||||
float icRightPos = _innerContainer->getRightBoundary();
|
|
||||||
if (icRightPos + touchOffsetX <= _rightBoundary)
|
|
||||||
{
|
|
||||||
realOffsetX = _rightBoundary - icRightPos;
|
|
||||||
scrollToRightEvent();
|
|
||||||
scrollenabled = false;
|
|
||||||
}
|
|
||||||
float icBottomPos = _innerContainer->getBottomBoundary();
|
|
||||||
if (icBottomPos + touchOffsetY >= _bottomBoundary)
|
|
||||||
{
|
|
||||||
realOffsetY = _bottomBoundary - icBottomPos;
|
|
||||||
scrollToBottomEvent();
|
|
||||||
scrollenabled = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (touchOffsetX < 0.0f && touchOffsetY < 0.0f) // down left
|
|
||||||
{
|
|
||||||
float icRightPos = _innerContainer->getRightBoundary();
|
|
||||||
if (icRightPos + touchOffsetX <= _rightBoundary)
|
|
||||||
{
|
|
||||||
realOffsetX = _rightBoundary - icRightPos;
|
|
||||||
scrollToRightEvent();
|
|
||||||
scrollenabled = false;
|
|
||||||
}
|
|
||||||
float icTopPos = _innerContainer->getTopBoundary();
|
|
||||||
if (icTopPos + touchOffsetY <= _topBoundary)
|
|
||||||
{
|
|
||||||
realOffsetY = _topBoundary - icTopPos;
|
|
||||||
scrollToTopEvent();
|
|
||||||
scrollenabled = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (touchOffsetX > 0.0f && touchOffsetY < 0.0f) // down right
|
|
||||||
{
|
|
||||||
float icLeftPos = _innerContainer->getLeftBoundary();
|
|
||||||
if (icLeftPos + touchOffsetX >= _leftBoundary)
|
|
||||||
{
|
|
||||||
realOffsetX = _leftBoundary - icLeftPos;
|
|
||||||
scrollToLeftEvent();
|
|
||||||
scrollenabled = false;
|
|
||||||
}
|
|
||||||
float icTopPos = _innerContainer->getTopBoundary();
|
|
||||||
if (icTopPos + touchOffsetY <= _topBoundary)
|
|
||||||
{
|
|
||||||
realOffsetY = _topBoundary - icTopPos;
|
|
||||||
scrollToTopEvent();
|
|
||||||
scrollenabled = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (touchOffsetX == 0.0f && touchOffsetY > 0.0f) // up
|
|
||||||
{
|
|
||||||
float icBottomPos = _innerContainer->getBottomBoundary();
|
|
||||||
if (icBottomPos + touchOffsetY >= _bottomBoundary)
|
|
||||||
{
|
|
||||||
realOffsetY = _bottomBoundary - icBottomPos;
|
|
||||||
scrollToBottomEvent();
|
|
||||||
scrollenabled = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (touchOffsetX < 0.0f && touchOffsetY == 0.0f) // left
|
|
||||||
{
|
|
||||||
float icRightPos = _innerContainer->getRightBoundary();
|
|
||||||
if (icRightPos + touchOffsetX <= _rightBoundary)
|
|
||||||
{
|
|
||||||
realOffsetX = _rightBoundary - icRightPos;
|
|
||||||
scrollToRightEvent();
|
|
||||||
scrollenabled = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (touchOffsetX == 0.0f && touchOffsetY < 0.0f) // down
|
|
||||||
{
|
|
||||||
float icTopPos = _innerContainer->getTopBoundary();
|
|
||||||
if (icTopPos + touchOffsetY <= _topBoundary)
|
|
||||||
{
|
|
||||||
realOffsetY = _topBoundary - icTopPos;
|
|
||||||
scrollToTopEvent();
|
|
||||||
scrollenabled = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (touchOffsetX > 0.0f && touchOffsetY == 0.0f) // right
|
|
||||||
{
|
|
||||||
float icLeftPos = _innerContainer->getLeftBoundary();
|
|
||||||
if (icLeftPos + touchOffsetX >= _leftBoundary)
|
|
||||||
{
|
|
||||||
realOffsetX = _leftBoundary - icLeftPos;
|
|
||||||
scrollToLeftEvent();
|
|
||||||
scrollenabled = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
moveChildren(realOffsetX, realOffsetY);
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
|
|
|
@ -356,7 +356,13 @@ protected:
|
||||||
void startBounceChildren(float v);
|
void startBounceChildren(float v);
|
||||||
void stopBounceChildren();
|
void stopBounceChildren();
|
||||||
bool checkCustomScrollDestination(float* touchOffsetX, float* touchOffsetY);
|
bool checkCustomScrollDestination(float* touchOffsetX, float* touchOffsetY);
|
||||||
|
|
||||||
virtual bool scrollChildren(float touchOffsetX, float touchOffsetY);
|
virtual bool scrollChildren(float touchOffsetX, float touchOffsetY);
|
||||||
|
virtual bool scrollChilderHorizontal(float touchOffsetX, float touchOffsetY);
|
||||||
|
virtual bool scrollChilderVertical(float touchOffsetX, float touchOffsetY);
|
||||||
|
virtual bool scrollChilderBoth(float touchOffsetX, float touchOffsetY);
|
||||||
|
|
||||||
|
|
||||||
bool bounceScrollChildren(float touchOffsetX, float touchOffsetY);
|
bool bounceScrollChildren(float touchOffsetX, float touchOffsetY);
|
||||||
void startRecordSlidAction();
|
void startRecordSlidAction();
|
||||||
virtual void endRecordSlidAction();
|
virtual void endRecordSlidAction();
|
||||||
|
|
Loading…
Reference in New Issue