gametimer.cpp
来自「这个是symbian下的一个蛮庞大的3D游戏源代码!对于学习3D开发的人有很大的」· C++ 代码 · 共 113 行
CPP
113 行
////////////////////////////////////////////////////////////////////////
//
// GameTimer.cpp
//
// Copyright (c) 2006 Nokia Corporation. All rights reserved.
//
////////////////////////////////////////////////////////////////////////
#include "GameTimer.h"
#include <e32svr.h>
#include <coemain.h>
#include "GameTimerObserver.h"
////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////
const TInt KCallbackInterval = 31250;
////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////
int CGameTimer::interval() const
{
return KCallbackInterval;
}
CGameTimer* CGameTimer::NewLC(MGameTimerObserver& aObserver)
{
CGameTimer* self = new (ELeave) CGameTimer(aObserver);
CleanupStack::PushL(self);
self->ConstructL();
return self;
}
////////////////////////////////////////////////////////////////////////
CGameTimer* CGameTimer::NewL(MGameTimerObserver& aObserver)
{
CGameTimer* self = CGameTimer::NewLC(aObserver);
CleanupStack::Pop();
return self;
}
////////////////////////////////////////////////////////////////////////
CGameTimer::CGameTimer(MGameTimerObserver& aObserver):
iObserver(aObserver)
{
}
////////////////////////////////////////////////////////////////////////
void CGameTimer::ConstructL()
{
iPeriodicTimer = CPeriodic::NewL(CActive::EPriorityIdle);
}
////////////////////////////////////////////////////////////////////////
void CGameTimer::Restart()
{
iPeriodicTimer->Start(0,KCallbackInterval,TCallBack(CGameTimer::TimerCompleted,this));
}
////////////////////////////////////////////////////////////////////////
void CGameTimer::CancelTimer()
{
iPeriodicTimer->Cancel();
}
////////////////////////////////////////////////////////////////////////
TBool CGameTimer::IsActive()
{
return iPeriodicTimer->IsActive();
}
////////////////////////////////////////////////////////////////////////
CGameTimer::~CGameTimer()
{
delete iPeriodicTimer;
iPeriodicTimer = 0;
}
////////////////////////////////////////////////////////////////////////
TInt CGameTimer::TimerCompleted(TAny* aObject)
{
return ((CGameTimer*)aObject)->HandleGameTimerCompleted();
}
////////////////////////////////////////////////////////////////////////
TInt CGameTimer::HandleGameTimerCompleted()
{
TInt result = iObserver.DoGameFrame();
if(result == StopTicking)
{
iPeriodicTimer->Cancel();
}
return result;
}
////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////
// End of File
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?