explosionarray.cpp

来自「最新官方例子,图形,描述副,基本控件,通讯协议,等等,」· C++ 代码 · 共 96 行

CPP
96
字号
/**
 *
 * @brief Definition of CExplosionArray
 *
 * Copyright (c) EMCC Software Ltd 2003
 * @version 1.0
 */

//Class Include
#include "ExplosionArray.h"

// System Include
#include <e32math.h>

// User Include
#include "Explosion.h"

const TInt KAreaOfImage = 16;


CExplosionArray* CExplosionArray::NewL(const TRect aValidArea)
	{
	CExplosionArray* self = CExplosionArray::NewLC(aValidArea);
	CleanupStack::Pop();
	return self;
	}

CExplosionArray* CExplosionArray::NewLC(const TRect aValidArea)
	{
	CExplosionArray* self = new (ELeave) CExplosionArray(aValidArea);
	CleanupStack::PushL(self);
	self->ConstructL();
	return self;
	}

CExplosionArray::CExplosionArray(const TRect aValidArea) :
	iValidArea(aValidArea)
	{
	}

CExplosionArray::~CExplosionArray()
	{
	iExplosionsArray.ResetAndDestroy();
	iExplosionsArray.Close();
	}

void CExplosionArray::ConstructL()
	{
	}

void CExplosionArray::CreateExplosionL()
	{
	TInt x = 0;
	TInt y = 0;
	GenerateRandomPosition(x, y);
	CExplosion* explosion = CExplosion::NewLC(TPoint(x,y)); // created using NewLC because it is an automatic not member data
	CleanupStack::Pop();
	iExplosionsArray.Append(explosion);
	}

void CExplosionArray::DrawExplosions(CBitmapContext& aBitmapContext)
	{
	TInt currentExplosion = 0;
	TInt sizeOfArray = iExplosionsArray.Count();

	while(currentExplosion < sizeOfArray)
		{
		if(iExplosionsArray[currentExplosion]->IsFinished())
			{
			delete iExplosionsArray[currentExplosion];
			iExplosionsArray.Remove(currentExplosion);
			iExplosionsArray.Compress();
			sizeOfArray--;
			}
		else
			{
			iExplosionsArray[currentExplosion]->BlitCurrentFrame(aBitmapContext);
			currentExplosion++;
			}
		}
	}

void CExplosionArray::GenerateRandomPosition(TInt& aX, TInt& aY)
	{
	TTime randomTime;
	randomTime.HomeTime();
	TInt64 seed = randomTime.Int64();
	TInt randomX = Math::Rand(seed);
	TInt randomY = Math::Rand(seed);

	aX = randomX % iValidArea.Width();
	aY = randomY % iValidArea.Height();
	}

// End of File

⌨️ 快捷键说明

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