/* * 功能: 增加一个渐出操作对象 * 摘要: 通过该函数可以自动添加一个渐变对象模型 * 参数: pShape - 对象指针 * 返回值: - * 作者: lpf * 创建日期: 2008.10.13 * 修改日志: * 2009.05.07 - lpf * 由于特效渐出效果不大,且容易造成莫名的当机,故禁止了特效渐出效果; * 2009.05.21 - lpf * 由于修改了一些模型底层错误,故现将特效渐出效果恢复; */ void CAlphaFadeObjectList::AddFadeOutObject(CShape * pShape) { if (pShape->GetDisplayModel() == NULL || pShape->GetAnimInfo() == NULL/* || pShape->GetType() == TYPE_EFFECT*/) return; CShape * pTmp = NULL; pShape->CopyShapeDisplayInfo(pTmp); if (pTmp == NULL) return; pTmp->SetAlphaFadeInStartTime(timeGetTime()); pTmp->SetAlphaFadeInTimeLength(pShape->GetAlphaFadeInTimeLength()); pTmp->SetAlphaFadeMode(ALPHA_FADE_OUT); pTmp->SetAlphaValue(1.0f); m_vecObjectList.push_back(pTmp); }
/* * 功能: 更新列表中的对象 * 摘要: 完成渐出操作的对象需要删除 * 参数: - * 返回值: - * 作者: lpf * 创建日期: 2008.10.13 * 修改日志: */ void CAlphaFadeObjectList::Update() { long lElapseTime = 0; vector<CShape *>::iterator it = m_vecObjectList.begin(); while (it != m_vecObjectList.end()) { CShape * pTmp = (*it); lElapseTime = timeGetTime() - pTmp->GetAlphaFadeInStartTime(); if (lElapseTime <= pTmp->GetAlphaFadeInTimeLength()) { pTmp->SetAlphaValue((float)(pTmp->GetAlphaFadeInTimeLength() - lElapseTime) / (float)pTmp->GetAlphaFadeInTimeLength()); ++it; }else { SAFE_DELETE(pTmp); it = m_vecObjectList.erase(it); } } }