soundhandler.cs
来自「Beginning C# Game Programming 的源代码」· CS 代码 · 共 54 行
CS
54 行
using System;
using System.Collections;
using System.Drawing;
using System.Windows.Forms;
using System.IO;
using Microsoft.DirectX;
using Microsoft.DirectX.DirectSound;
using Buffer = Microsoft.DirectX.DirectSound.SecondaryBuffer;
namespace SpaceDonuts {
public class SoundHandler {
private Device soundDevice = null;
ArrayList sounds = new ArrayList();
Sounds lastSound;
public SoundHandler(Control owner) {
soundDevice = new Device();
soundDevice.SetCooperativeLevel(owner, CooperativeLevel.Priority);
CreateSoundBuffers();
}
void AddBuffer(string filename, Sounds thisSound, bool looping) {
sounds.Add(new SoundBuffer(soundDevice,filename,thisSound,looping));
}
void CreateSoundBuffers() {
//Buffers must be created in same order as the enumerated type "Sounds"
AddBuffer(MediaUtilities.FindFile("shipappear.wav"), Sounds.ShipAppear, false);
AddBuffer(MediaUtilities.FindFile("shield.wav"), Sounds.ShipShield, false);
AddBuffer(MediaUtilities.FindFile("gunfire.wav"), Sounds.ShipFire, false);
AddBuffer(MediaUtilities.FindFile("bangbang.wav"), Sounds.ShipExplode, false);
AddBuffer(MediaUtilities.FindFile("rev.wav"), Sounds.ShipThrust, false);
AddBuffer(MediaUtilities.FindFile("skid.wav"), Sounds.ShipBrake, false);
AddBuffer(MediaUtilities.FindFile("bounce.wav"), Sounds.ShipBounce, false);
AddBuffer(MediaUtilities.FindFile("hum.wav"), Sounds.ShipHum, true);
AddBuffer(MediaUtilities.FindFile("level.wav"), Sounds.LevelStart, false);
AddBuffer(MediaUtilities.FindFile("d_bang.wav"), Sounds.DonutExplode, false);
AddBuffer(MediaUtilities.FindFile("p_bang.wav"), Sounds.PyramidExplode, false);
AddBuffer(MediaUtilities.FindFile("d_bang.wav"), Sounds.CubeExplode, false); //should be c_bang
AddBuffer(MediaUtilities.FindFile("p_bang.wav"), Sounds.SphereExplode, false); //should be s_bang
}
public void Play(Sounds soundsToPlay) {
// check each enum value. If that value is set, play the sound...
foreach (SoundBuffer buffer in sounds) {
bool on = ((buffer.Sound & soundsToPlay) != 0);
buffer.Play(on);
}
lastSound = soundsToPlay;
}
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?