UI移动和渐隐渐现

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  =   0x88 int  nMaxAlpha  =   0xFF int  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;
        }

    }

}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值