ZEngine Demo 2 - ZAudio 初级使用



easycker
2010-11-09 21:54:01

[i=s] 本帖最后由 easycker 于 2010-11-10 16:32 编辑 [/i]

ZAudio 类 音频接口类,支持MP3(0),WAV(1),OGG(2).

1.音频 文件的播放

Game.h:[code]
#ifndef _GAME_H
#define _GAME_H

#include "ZGame.h"

class Game : public ZGame
{
public:
Game(){}
~Game(){}

void GameInitial();
void GameCircle();
void GameDrawScene();
void GameButtonDown(int nKeyNumber);
void GameButtonUp(int nKeyNumber);
void GameEnd();

private:
ZAudio *m_mp3;// (1) 构造3个ZAudio对象
ZAudio *m_wav;
ZAudio *m_ogg;
};

#endif

[/code]Game.cpp:[code]
//游戏入口类
#include "Game.h"

void Game::GameInitial()
{
// (2)初始化并加载
this->m_mp3 = new ZAudio(MP3);
this->m_wav = new ZAudio(WAV);
this->m_ogg = new ZAudio(OGG);

this->m_mp3->Load("./music/1.mp3");//加载 资源文件 当前目录下(project 1)的music目录中的1.mp3
this->m_wav->Load("./music/1.wav");
this->m_ogg->Load("./music/1.ogg");
}


//游戏循环
void Game::GameCircle()
{
m_mp3->Replay(0); //0循环播放 ,背景音乐可以填,不填默认为1,就是播放1次
m_wav->Replay(); //播放1次,默认为1,也可以填1
m_ogg->Replay(2); //播放2次,第一次播放完后播放第二次
}

//游戏绘图
void Game::GameDrawScene()
{

}

//按下按键
void Game::GameButtonDown(int nKeyNumber)
{

}

//弹起按键
void Game::GameButtonUp(int nKeyNumber)
{

}

//游戏结束
void Game::GameEnd()
{
Quit();
}

[/code]二,用按键控制播放
Game.h:[code]
#ifndef _GAME_H
#define _GAME_H

#include "ZGame.h"

class Game : public ZGame
{
public:
Game(){}
~Game(){}

void GameInitial();
void GameCircle();
void GameDrawScene();
void GameButtonDown(int nKeyNumber);
void GameButtonUp(int nKeyNumber);
void GameEnd();

private:
ZAudio *m_mp3;// (1) 构造3个ZAudio对象
};

#endif
[/code]Game.cpp:[code]
//游戏入口类
#include "Game.h"

void Game::GameInitial()
{
// (2)初始化并加载
this->m_mp3 = new ZAudio(MP3);

this->m_mp3->Load("./music/1.mp3");//加载 资源文件 当前目录下(project 1)的music目录中的1.mp3
}


//游戏循环
void Game::GameCircle()
{

}

//游戏绘图
void Game::GameDrawScene()
{

}

//按下按键
void Game::GameButtonDown(int nKeyNumber)
{
static int vol = 50; //定义一个音量 ,static表明这个变量可以在该函数中一直用(有且只有1个,在内存中分配一个静态的区域)
if(nKeyNumber == PSP_BUTTON_CIRCLE) m_mp3->Replay(); //按O播放
if(nKeyNumber == PSP_BUTTON_CROSS) m_mp3->Stop(); //X停止播放
if(nKeyNumber == PSP_BUTTON_SELECT) m_mp3->Pause(); //select暂停播放
if(nKeyNumber == PSP_BUTTON_START) m_mp3->Resume(); //start 恢复播放
if(nKeyNumber == PSP_BUTTON_UP) m_mp3->Volume(vol ++); //音量 ++;
if(nKeyNumber == PSP_BUTTON_DOWN) m_mp3->Volume(vol --); //音量 --;
}

//弹起按键
void Game::GameButtonUp(int nKeyNumber)
{

}

//游戏结束
void Game::GameEnd()
{
Quit();
}

[/code]


boy545003571
2010-11-10 00:16:11

教程什么的,要收藏的~~


easycker
2010-11-10 09:51:52

你们可以把class 看做是 包含函数的struct
用发和struct一样的

ZAudio *m_mp3
就相当于创建一个结构体变量
把ZAudio看做结构体
把*m_mp3看做指针变量

m_mp3->Replay(); 就相当于结构体调用成员变量,这里不同的只是调用函数而已