BenStroke escreveu
Olá a todos.
Estou iniciando no XNA e estou algumas dúvidas referentes a som.
Com o XNA 3.0, há a possibilidade de não mais se usar o XACT, usando SoundEffects e SoundEffectInstances.
Mas, como criar uma função que receba o nome do som [creio que previamente 'carregado' no LoadContent] e retorne o som, em si?
Pergunto isso porque estou com certas dificuldades nesta parte: não consigo passar a string do nome do som para a variável, daí, mesmo que eu faça a tal chamada, ela não iria ter o que buscar.
Há como "pegar o nome", associando ao Cue? Algo semelhante ao que era possível em "soundbank.getCue(nome)"?
Desde já agradeço e guardo respostas.
Abraços.
|
Olá BenStroke blz?
Existem várias formas de se fazer isso que você quer. Eu fiz uma classe demonstrando uma maneira de se fazer isso que você quer. Qualquer dúvida ou questionamento sobre a mesma, você pode ficar a vontade em indagar. Abaixo segue a classe:
public class MySoundBank
{
///<summary>
/// Banco de Som; Coleção que irá armazenar as canções.
///</summary>
private Dictionary<Sounds, Song> soundBank;
public enum Sounds
{
Sound1, Sound2, Sound3
}
public MySoundBank()
{
this.soundBank = new Dictionary<Sounds, Song>();
}
///<summary>
/// Adiciona uma canção ao Banco de Som(soundBank).
///</summary>
///<param name="sound">Valor da Enumeração(Sounds) que vai representar uma canção no banco de Som(soundBank)</param>
///<param name="song">A canção que será adicionada ao banco de som(soundBank)</param>
public void AddSound(Sounds sound, Song song)
{
this.soundBank.Add(sound, song);
}
///<summary>
/// Pega uma canção armazenada no Banco de som
///</summary>
///<param name="sound">Valor da Enumeração(Sounds) que vai representar uma canção no banco de Som(soundBank)</param>
///<returns>Retorna uma canção do banco de Som(soundBank)</returns>
public Song GetSound(Sounds sound)
{
return this.soundBank[sound];
}
}
Só uma observação:
Ao invés da classe Song você pode usar também a classe SoundEffect. Fica a cargo da sua necessidade e/ou escolha!
vlw, abraços