📄 soundmanager.cpp
字号:
/*
========================================================================
Name : SoundManager.cpp
Author :
Copyright :
Description : Manages multiple sound files.
License :
========================================================================
*/
#include "SoundManager.h"
/// Constructors
CSoundManager::CSoundManager()
{
for (TInt i = 0; i < MAX_SOUNDS; i++)
iSounds[i] = NULL;
iSoundOn = EFalse;
}
/// Destructor
CSoundManager::~CSoundManager()
{
for (TInt i = 0; i < MAX_SOUNDS; i++)
{
if (iSounds[i])DELETE_AND_NULL(iSounds[i]);
}
}
void CSoundManager::LoadSoundFileL(RFs& aFs, const TDesC& aSoundFileName,
TInt aSoundNumber)
{
if (aSoundNumber >= 0 && aSoundNumber < MAX_SOUNDS)
{
RBuf fileName;
fileName.CleanupClosePushL();
NCommonFunctions::AddPrivateDirL(aFs, aSoundFileName, fileName);
iSounds[aSoundNumber] = CPlayerAdapter::NewL(fileName);
CleanupStack::PopAndDestroy(&fileName);
}
}
void CSoundManager::PlayL(TInt aSoundNumber)
{
if (iSoundOn && iSounds[aSoundNumber])
{
// Stop all sounds as we can't play two sounds at the same time.
for (TInt i=0; i < MAX_SOUNDS; i++)
{
if (iSounds[i] && iSounds[i]->IsPlaying())
{
// Don't play new sound if one is currently playing,
// otherwise, there will be a significant delay in the game.
//iSounds[i]->Stop();
return;
}
}
// Now, finally we can play our sound.
iSounds[aSoundNumber]->Play();
}
}
void CSoundManager::Stop(TInt aSoundNumber)
{
if (iSoundOn && iSounds[aSoundNumber])
{
TRAPD(error, iSounds[aSoundNumber]->Stop())
;
}
}
void CSoundManager::SetVolume(const TInt aSoundLevel)
{
if (aSoundLevel == VOLUME_OFF)
{
iSoundOn = EFalse;
}
else
{
iSoundOn = ETrue;
for (TInt i=0; i < MAX_SOUNDS; i++)
{
if (iSounds[i])
iSounds[i]->SetVolumeFraction(aSoundLevel);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -