cgametimer.cpp

来自「在symbian2.0平台上开发的完整的俄罗斯方块的源码。」· C++ 代码 · 共 77 行

CPP
77
字号
#include <e32svr.h>
#include <coemain.h>

#include "CGameTimer.h"
#include "MGameTimerObserver.h"

////////////////////////////////////////////////////////////////////////////
// construct and destruct

// NewL()
CGameTimer* CGameTimer::NewL(MGameTimerObserver& aObserver)
{
	CGameTimer* self = new (ELeave) CGameTimer(aObserver);
	CleanupStack::PushL(self);

	self->ConsturctL();

	CleanupStack::Pop();

	return self;
}

// ConstructL()
void CGameTimer::ConsturctL()
{
	iTick = 100000;
	iPeriodicTimer = CPeriodic::NewL(CActive::EPriorityStandard);
}

// CGameTimer()
CGameTimer::CGameTimer(MGameTimerObserver& aObserver) : iObserver( aObserver )
{}

// ~
CGameTimer::~CGameTimer()
{
	iPeriodicTimer->Cancel();
	delete iPeriodicTimer;
	iPeriodicTimer = NULL;
}

/////////////////////////////////////////////////////////////////////////////
// Other Method

// Start()
void CGameTimer::Start()
{
	if( !iPeriodicTimer->IsActive() )
		iPeriodicTimer->Start(iTick, iTick, TCallBack(CGameTimer::Period, this) );
}

// Cancel()
void CGameTimer::Cancel()
{
	iPeriodicTimer->Cancel();
}

// SetTickTime
void CGameTimer::SetTickTime(TTimeIntervalMicroSeconds32 aTickTime)
{
	iTick = aTickTime;
	Cancel();
	Start();
}


// Period()
TInt CGameTimer::Period(TAny* aPtr)
{
	return ((CGameTimer*)aPtr)->DoCall();
}

// DoCall()
TInt CGameTimer::DoCall()
{
	return iObserver.DoGameFrameL();
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?