Como posso jogar imediatamente um som quando outro termina som usando XNA / XACT?
Pergunta
Esta questão faz fronteira entre o mundo do designer de áudio e o programador. Enquanto esta questão pode ter que ser parcialmente respondida por esse domínio de um designer de áudio, é certo um problema para o programador. Em nosso projeto, queremos fazer um loop um som (música de fundo), enquanto o relógio do jogo é maior que um minuto esquerda. Quando esse tempo é atingido, queremos parar a música como autor, e, em seguida, continuar imediatamente com terminando segmento . Eu tenho procurado em XACT, e parece ter suporte para diferentes eventos. Infelizmente, a documentação está faltando, ea aplicação é um pouco estranho para mim como um programador.
O que eu estou procurando fazer é algo nesse sentido (diferentes abordagens):
- Quando a música parar, quero amarrar um evento para reproduzir outro som imediatamente
- Quando um marcador é desencadeada na música, eu quero jogar outro som imediatamente
- Eu também gostaria de saber no meu aplicativo quando alguns desses eventos acontecer
O problema é que eu não tenho sido capaz de encontrar qualquer mecanismo para som auto-play quando outro som começa e que eu não posso encontrar uma maneira de conectar-se com os eventos realizados no projeto XACT para C #.
Se isso não puder ser feito (ou seja XACT / XNA não tem suporte para essas operações), reúna suas ideias sobre como resolver este problema com erros de tempo cross-som mínimos. De preferência, eu seria capaz de controlar o máximo possível deste em C # com chamadas para XNA.
Solução
eu acho que já resolvido agora
Aqui está como eu fiz isso.
- Selecione o Cue o qual deseja som mudança depois de ter sido parado em XACT .
- Set Lista de reprodução Tipo para Interativo .
- Open Cue Transitions .
- Selecione Ver por Destino .
- Selecione o Cue na (parar) nó visível na exibição em árvore.
- Em Propriedades de Transição no lado direito da exibição em árvore, para Origem e Destino :
- Set Fonte para Fim de loop .
- Set destiantion para Começando .
- Em Propriedades de Transição no lado direito da exibição em árvore, para Transitions :
- Set Tipo de Transição para Direto Concurrent Transição .
- Set Som de Transição para o som que você deseja jogar após o som looping completou seu ciclo.
fechar a janela e testá-lo por jogar o Cue. Também teste para pará-lo Como Authored para ver se o comportamento fulfilles suas expectativas.
Implementação
No código, Parar o Cue Como Authored para obter esse comportamento. Imediato pára a deixa sem jogar o Outro som. Espero que isso ajude outras pessoas que possam executar para esse problema no futuro. A pergunta ea resposta não foi muito código orientado como eu pensava inicialmente. Além disso, esta aplica-se para XNA 2.0. Eu não sei se haverá outras opções para controlar este tipo de comportamento em XNA 3.0 +.