Ahoj,
snažím se přehrát jeden zvuk pomocí knihovny Bass.net tak, aby program
čekal, než se přehrávání zastaví. Hned na to chci přehrát jiný zvuk,
ale oba zvuky se mi vždy přehrají současně.
Zkusil jsem: Mám třídu SoundItem s metodami pro ovládání jednoho zvuku
a dále třídu SoundMachine, která spravuje všechny zvuky. Poslední můj
pokus není moc čistý: v třídě SoundMachine ukládám číslo posledně
spuštěného zvuku, u něhož chci, aby se přehrával synchronně. Tohle
ukládá metoda PlaySync. Metoda Play nejdřív zjistí, jestli se přehrává
nějaký synchronní zvuk, pokud ano, nově přehrávaný zvuk počká na
dokončení zvuku předchozího.
public void PlaySync()
{
Play();
SoundMachine.LastSyncSoundHandle = _handle;
}//fnc
public void Play()
{
int oldHandle = SoundMachine.LastSyncSoundHandle;
if (oldHandle == -1 && BASS_ChannelIsActive(oldHandle) !=
BASSActive.BASS_ACTIVE_PLAYING) // žádný synchronní zvuk
BASS_ChannelPlay(_handle, true);přehraj okamžitě
else // počkej na dokončení zvuku
{
// vytvoř delegáta
SYNCPROC p = new SYNCPROC((handle, channel, data, user) =>
{
SoundMachine.LastSyncSoundHandle = -1; smaž číslo starého zvuku
BASS_ChannelPlay(_handle, true); // přehraj nový
};
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.