Приставки
Nintendo (Dendy)
Nintendo 64
Sega Genesis
Sega CD / 32x
Master System
Super Nintendo
Turbo Grafx 16
Sega Saturn
Sony PlayStation
GameBoy Advance
GameBoy / Color
Game Gear
Atari
Другие

Утилиты
Системные утилиты
GoodXXXX
Sega CD / 32x
Nintendo 64
Переводы, хакинг
Музыка

Мир приставочных игр

Версия 2.00a

Leonis © 2002-2009
Команда Новости Помощь Ссылки
ПОМОЩЬ
Литература про игры
Предыдущая Следующая

Рис. 13.9. Рабочий каталог проекта с добавленными в него звуковыми файлами и проектом XACT

//=========================================================================

#region Dependencies using System;

using System.Collections.Generic; using System.Text; using System.IO;

using Microsoft.Xna.Framework.Audio; #endregion

namespace Audio

{

public enum soundList

{

/// <summary>

Класс Sound 237

/// Прикосновение к ковру-самолету

/// </summary>

Platform,

/// <summary>

/// Падение в пропасть

/// </summary>

Boom,

}

public static class Sound {

private static AudioEngine engine; private static SoundBank soundbank; private static WaveBank wavebank;

/// <summary> /// Инициализация /// </summary>

public static void Initialize()

{

engine = new AudioEngine(«Content\\Sound\\Sound.xgs»);

soundbank =new SoundBank(engine, «Content\\Sound\\Sound Bank.xsb»);

wavebank = new WaveBank(engine, «Content\\Sound\\Wave Bank.xwb»);

}

private static string[] cueNames = new string[]

{

«platform», «boom»,

};

/// <summary>

/// Воспроизведение звука после остановки /// </summary>

public static CuePlay(soundList sound)

{

Cue returnValue = soundbank.GetCue(cueNames[(int)sound]);

returnValue.Play();

return returnValue;

}

/// <summary>

/// Воспроизведение

/// </summary>

public static void PlayCue(soundList sound)

{

soundbank.PlayCue(cueNames[(int)sound]);

}

/// <summary>

/// Обновляем звук

/// </summary>

public static void Update()

{

238 Звуковые эффекты

engine.Update();

}

/// <summary>

/// Останавливаем воспроизведение /// </summary>

public static void Stop(Cue cue) {

cue.Stop(AudioStopOptions.Immediate);

}

} }

Ключевыми фигурами в звуковых проектах, основанных на использовании XACT, являются три класса: AudioEngine, SoundBank и WaveBank. Объявление и создание объектов этих классов, а также загрузка звука в игру всегда происходят в одном и том же ключе. Посмотрите на нижеприведенные строки исходного кода.

private static AudioEngine engine; private static SoundBank soundbank; private static WaveBank wavebank;

public static void Initialize()

{

engine = new AudioEngine(«Content\\Sound\\Sound.xgs»);

soundbank = new SoundBank(engine, «Content\\Sound\\Sound Bank.xsb»);

wavebank = new WaveBank(engine, «Content\\Sound\\Wave Bank.xwb»);

}

В трех первых строках этого блока кода происходит объявление трех объектов. Затем создание или инициализация объектов в данном случае делается в методе Initialize(), но это можно сделать в любом месте на этапе загрузки игры. Создание выше перечисленных объектов всегда происходит именно таким способом, как показано в коде. Это их специфика, или черный ящик, как хотите. Главное, что нужно четко понимать, - это какие пути прописывать в параметрах конструкторов классов AudioEngine, SoundBank и WaveBank.


Предыдущая Следующая

Горяченькое

Друзья

Hosted by uCoz