UI移动和渐隐渐现

来源:互联网 发布:淘宝怎么买vr资源 编辑:程序博客网 时间:2024/05/01 03:58
UI的移动和渐隐渐显 实现简单却能给游戏加载或场景过度一个不错的效果

废话不说 上一个简单的代码

#define UI_FADE_SPEED 1
#define UI_MOVE_SPEED 1
// 设置移动目标 
void SetMove( int nDstX, int nDstY )
{
    m_nMoveToX 
= nDstX;
    m_nMoveToY 
= nDstY;
    m_dwMoveStartTime 
= TimeGetTime();
}

// 移动 Updating
if ( m_bMoving )
{
    
int na = m_nMoveToY - rcReal.top;
    
int nb = m_nMoveToX - rcReal.left;
    
int nc = sqrt( ( FLOAT )( na * na ) + ( FLOAT )( nb * nb ) );
    
int nX = 0;
    
int nY = 0;
    
int nMoveDistance = UI_MOVE_SPEED * ( TimeGetTime() - m_dwMoveStartTime );
    
if ( nMoveDistance >= nc )
    
{
        m_bMoving 
= false;
        nX 
= m_nMoveToX;
        nY 
= m_nMoveToY;
    }

    
else
    
{
        nX 
= nMoveDistance * nb / nc + rcReal.left;
        nY 
= nMoveDistance * na / nc + rcReal.top;
    }

    SetPos( nX, nY );
}


// 显示UI 可以开启渐隐渐显
void SetVisable( bool bVisable , bool bFadeInOrOut = false , int nCurAlpha = 0x88int nMaxAlpha = 0xFFint nMinAlpha = 0x00 )
{
    m_bVisable 
= bVisable;
    m_nFadeCurColorA 
= nCurAlpha;
    m_bFadeInorFadeOut 
= bFadeInOrOut;
    
if ( bVisable )
        m_dwFadeStartTime 
= TimeGetTime();
}


// 淡入淡出 Rendering
if ( m_bFadeInorFadeOut )
{
    
if ( IsVisable() )
    
{
        m_nFadeCurColorA 
= UI_FADE_SPEED * ( TimeGetTime() - m_dwFadeStartTime );
        
if ( m_nFadeCurColorA >= m_nMaxFade )
        
{
            m_nFadeCurColorA    
= m_nMaxFade;
            m_bFadeInorFadeOut    
= false;
        }

    }

    
else
    
{
        m_nFadeCurColorA 
= 0xff - UI_FADE_SPEED * ( TimeGetTime() - m_dwFadeStartTime );
        
if ( m_nFadeCurColorA <= m_nMinFade )
        
{
            m_nFadeCurColorA    
= m_nMinFade;
            m_bFadeInorFadeOut    
= false;
        }

    }

}
原创粉丝点击