rt
audioplayer代碼大概是這樣的 是照著之前很早的一個帖子做的塔防游戲
音頻怎么都放不出來 無論是背景音樂還是特效音也是
#include "audioplayer.h" //對應的header檔案
#include <QDir> //操作檔案路徑的頭檔案
#include <QMediaPlayer> //操作音頻與視頻的頭檔案
#include <QMediaPlaylist> //保存媒體路徑
static const QString s_curDir = QDir::currentPath() +"/";
AudioPlayer::AudioPlayer(QObject *parent)
: QObject(parent)
, m_backgroundMusic(0)
{
// 創建一直播放的背景音樂
QUrl backgroundMusicUrl = QUrl::fromLocalFile(s_curDir + "music/8bitDungeonLevel.mp3"); //檔案的位置
if (QFile::exists(backgroundMusicUrl.toLocalFile())) //如果存在 回傳1
{
m_backgroundMusic = new QMediaPlayer(this); //指向類物件本身地址
QMediaPlaylist *backgroundMusicList = new QMediaPlaylist(); // list也指向類物件本身地址 默認this
QMediaContent media(backgroundMusicUrl); //media 為backgroundMusicUrl的物件參考
backgroundMusicList->addMedia(media); // 串列插入
backgroundMusicList->setCurrentIndex(0); //切換音樂 開始播放
// 設定背景音樂回圈播放
backgroundMusicList->setPlaybackMode(QMediaPlaylist::CurrentItemInLoop); // 播放模式 回圈播放
m_backgroundMusic->setPlaylist(backgroundMusicList); //將串列導向m_backgroundMusic
}
}
void AudioPlayer::startBGM()
{
if (m_backgroundMusic)
m_backgroundMusic->play(); // DJ打碟
}
void AudioPlayer::playSound(SoundType soundType)
{
static const QUrl mediasUrls[] =
{
QUrl::fromLocalFile(s_curDir + "music/tower_place.wav"),
QUrl::fromLocalFile(s_curDir + "music/life_lose.wav"),
QUrl::fromLocalFile(s_curDir + "music/laser_shoot.wav"),
QUrl::fromLocalFile(s_curDir + "music/enemy_destroy.wav")
}; //鏈接保存在mediasUrls[]
static QMediaPlayer player; //將 設定Qmediaplayer物件player
if (QFile::exists(mediasUrls[soundType].toLocalFile())) //如果存在 回傳1
{
player.setMedia(mediasUrls[soundType]); // 鏈接串列
player.play(); // 開始播放
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/242565.html
標籤:Qt
上一篇:【APICloud系列|21】使用APICloud敏捷式開發總結,回顧開發一個完整APP程序。
下一篇:求分享app名片設計代碼
