void ScrollView::setInnerContainerPosition(const Vec2 &position) { if(position == _innerContainer->getPosition()) { return; } _innerContainer->setPosition(position); _outOfBoundaryAmountDirty = true; // Process bouncing events if(_bounceEnabled) { for(int direction = (int) MoveDirection::TOP; direction < (int) MoveDirection::RIGHT; ++direction) { if(isOutOfBoundary((MoveDirection) direction)) { processScrollEvent((MoveDirection) direction, true); } } } this->retain(); if (_eventCallback) { _eventCallback(this, EventType::CONTAINER_MOVED); } if (_ccEventCallback) { _ccEventCallback(this, static_cast<int>(EventType::CONTAINER_MOVED)); } this->release(); }
bool ScrollView::isNecessaryAutoScrollBrake() { if(_autoScrollBraking) { return true; } if(isOutOfBoundary()) { // It just went out of boundary. if(!_autoScrollCurrentlyOutOfBoundary) { _autoScrollCurrentlyOutOfBoundary = true; _autoScrollBraking = true; _autoScrollBrakingStartPosition = getInnerContainerPosition(); return true; } } else { _autoScrollCurrentlyOutOfBoundary = false; } return false; }
bool ScrollView::isOutOfBoundaryLeftOrRight() const { return isOutOfBoundary(MoveDirection::LEFT) || isOutOfBoundary(MoveDirection::RIGHT); }
bool ScrollView::isOutOfBoundaryTopOrBottom() const { return isOutOfBoundary(MoveDirection::TOP) || isOutOfBoundary(MoveDirection::BOTTOM); }