Beispiel #1
0
void CScrollView::onTouchMoved(Touch *pTouch, float fDuration)
{
    Vec2 tNodePoint = convertToNodeSpace(pTouch->getLocation());
    
    if( m_pSelectedWidget )
    {
        if( m_eSelectedWidgetTouchModel == eWidgetTouchTransient && !m_bTouchMoved )
        {
            float fDistance = tNodePoint.getDistance(m_tTouchBeganPoint);   

            if(!m_bTouchMoved && fabs(ccScrollconvertPointToInch(fDistance)) < CSCROLLVIEW_MOVE_INCH)
            {
                m_pSelectedWidget->executeTouchMovedHandler(pTouch, fDuration);
                return;
            }

            m_bTouchMoved = true;
            m_pSelectedWidget->interruptTouch(pTouch, fDuration);
        }
        
        if(!m_pSelectedWidget->isTouchInterrupted())
        {
            m_pSelectedWidget->executeTouchMovedHandler(pTouch, fDuration);

            if(!m_pSelectedWidget->isTouchInterrupted())
            {
                return;
            }
        }
    }
    
    if( !m_bDragging )
    {
        m_tTouchBeganPoint = tNodePoint;
        m_tLastMovePoint = tNodePoint;
        m_bDragging = true;
		stoppedDeaccelerateScroll();
		stoppedAnimatedScroll();
    }
    
    if( m_bDragable )
    {
        m_tScrollDistance = tNodePoint - m_tLastMovePoint;
        m_tLastMovePoint = tNodePoint;
        
        switch( m_eDirection )
        {
            case eScrollViewDirectionHorizontal:
                m_tScrollDistance.y = 0;
                break;
            case eScrollViewDirectionVertical:
                m_tScrollDistance.x = 0;
                break;
            default:
                break;
        }
        
        setContentOffset( getContentOffset() + m_tScrollDistance );
    }
}
Beispiel #2
0
CWidgetTouchModel CScrollView::onTouchBegan(Touch *pTouch)
{
    Vec2 tNodePoint = convertToNodeSpace(pTouch->getLocation());

	if( m_pContainer->getBoundingBox().containsPoint(tNodePoint) )
    {
		m_pSelectedWidget = m_pContainer;
    }
	else
	{
		m_pSelectedWidget = NULL;
	}
    
    if( m_pSelectedWidget )
    {
		m_eSelectedWidgetTouchModel = m_pSelectedWidget->executeTouchBeganHandler(pTouch);
        if( m_eSelectedWidgetTouchModel == eWidgetTouchNone )
        {
			m_pSelectedWidget = NULL;
        }
    }
    
    m_tTouchBeganPoint = tNodePoint;
    
    if( m_eSelectedWidgetTouchModel == eWidgetTouchNone && m_bDragable )
    {
        m_tLastMovePoint = tNodePoint;
        m_bDragging = true;
		stoppedDeaccelerateScroll();
		stoppedAnimatedScroll();
    }

    return eWidgetTouchSustained;
}
Beispiel #3
0
void CScrollView::performedAnimatedScrolling(float dt)
{
	if( m_bDragging )
    {
		m_pContainer->stopActionByTag(CSCROLLVIEW_MOVE_ACTION_TAG);
		stoppedAnimatedScroll();
        return;
    }
    this->onScrolling();
	this->executeScrollingHandler(this);
}
Beispiel #4
0
void CScrollView::onExit()
{
	stoppedAnimatedScroll();
	stoppedDeaccelerateScroll();
    CLayout::onExit();
}
void ScrollView::stopAnimatedContentOffset() {
    stopAction(_animatedScrollAction);
    _animatedScrollAction->release();
    _animatedScrollAction = nullptr;
    stoppedAnimatedScroll(this);
}