sprite.cpp
来自「一个symbian上成熟的小游戏源码」· C++ 代码 · 共 84 行
CPP
84 行
#include "Sprite.h"
namespace gamespace
{
CSprite::CSprite()
{
}
CSprite::~CSprite()
{
delete iSequence;
}
void CSprite::SetSource(CFbsBitmap* aBmp,CFbsBitmap* aBmpMask,TInt aCellWidth/*=0*/,TInt aCellHeight/*=0*/ )
{
CLayer::SetSource(aBmp,aBmpMask,aCellWidth,aCellHeight);
//设置默认的序列
iSequence->Set(iRows*iCols);
}
void CSprite::SetSequence( TInt* pSeq,TInt seqLength,TInt* aPDelays)
{
if( seqLength < 0 || pSeq == NULL )
return;
iSequence->Set(pSeq,seqLength,aPDelays);
}
void CSprite::SetSequence( CSequence* iSequence )
{
delete iSequence;
this->iSequence=iSequence;
}
void CSprite::PrevFrame()
{
iSequence->PrevFrame();
}
void CSprite::NextFrame()
{
iSequence->NextFrame();
}
void CSprite::Draw(CBitmapContext& aGc) const
{
TInt frameIndex=*iSequence;//得到当前帧索引
CLayer::Draw(frameIndex,aGc);
}
void CSprite::SetCurrentFrame( TInt sequenceIndex )
{
iSequence->SetCurrentIndex(sequenceIndex);
}
void CSprite::Draw( TInt frameIndex,CBitmapContext& aGc) const
{
CLayer::Draw(frameIndex,aGc);
}
CSprite* CSprite::NewL( CFbsBitmap* aBmp,CFbsBitmap* aBmpMask,TInt aCellWidth/*=0*/,TInt aCellHeight/*=0*/ )
{
CSprite* self=CSprite::NewLC(aBmp,aBmpMask,aCellWidth,aCellHeight);
CleanupStack::Pop();
return self;
}
CSprite* CSprite::NewLC( CFbsBitmap* aBmp,CFbsBitmap* aBmpMask,TInt aCellWidth/*=0*/,TInt aCellHeight/*=0*/ )
{
CSprite* self=new(ELeave)CSprite;
CleanupStack::PushL(self);
self->ConstructL(aBmp,aBmpMask,aCellWidth,aCellHeight);
return self;
}
void CSprite::ConstructL( CFbsBitmap* aBmp,CFbsBitmap* aBmpMask,TInt aCellWidth/*=0*/,TInt aCellHeight/*=0*/ )
{
iSequence=new(ELeave)CSequence;
SetSource(aBmp,aBmpMask,aCellWidth,aCellHeight);
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?