Brew的计时器问题
我设计了一个计时器来实现动画, 可是动画效果越来越慢, 这是为什么呢?
// 计时器回调函数
void CBREW_TimerApp::P_Timer(CBREW_TimerApp* pMe)
{
x += 0.5;
y += 0.5;
ISHELL_PostEvent(pMe->m_pIShell, AEECLSID_BREW_TIMER, EVT_TIMER, 0, 0);
}
boolean CBREW_TimerApp::onEvent(AEEEvent evt, uint16 wParam, uint32 dwParam)
{
switch(evt)
{
case EVT_APP_START:
{
IDISPLAY_ClearScreen(m_pIDisplay); // 清屏
g_pIImage = ISHELL_LoadImage(m_pIShell, "Player.png");
IIMAGE_Draw(g_pIImage, x, y);
IDISPLAY_Update(m_pIDisplay); // 更新
ISHELL_SetTimer(m_pIShell, CurTime, (PFNNOTIFY)P_Timer, this);
return TRUE;
}
case EVT_APP_SUSPEND:
return TRUE;
case EVT_APP_RESUME:
return TRUE;
case EVT_APP_MESSAGE:
return(TRUE);
case EVT_KEY:
{
switch(wParam)
{
case AVK_CLR:
return TRUE;
case AVK_UP:
case AVK_DOWN:
case AVK_LEFT:
case AVK_RIGHT:
case AVK_SELECT:
break;
default:
break;
}
break;
}
case EVT_COMMAND:
{
break;
}
case EVT_APP_STOP:
ISHELL_CancelTimer(m_pIShell, (PFNNOTIFY)P_Timer, this);
IIMAGE_Release(g_pIImage); // 释放
return TRUE;
case EVT_TIMER: // 计时器消息
//画图片
IDISPLAY_ClearScreen(m_pIDisplay);
IIMAGE_Draw(g_pIImage, x, y);
IDISPLAY_Update(m_pIDisplay);
ISHELL_SetTimer(m_pIShell, CurTime, (PFNNOTIFY)P_Timer, this); // 重新开启计时器, 实现循环
return TRUE;
default:
break;
}
return FALSE;
}