NOVINKA - Online rekvalifikační kurz Python programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: c# Synchronní přehrávání zvuku v Bass.net

V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.

Jak se ti líbí článek?
Před uložením hodnocení, popiš prosím autorovi, co je špatněZnaků 0 z 50-500
Jak se ti kurz líbí?
Tvé hodnocení kurzuZnaků 0 z 50-500
Aktivity
Avatar
Lukáš Vámoš:21.7.2018 10:12

Ahoj,
při zobrazení modálního dialogu se má přehrát jeden zvuk synchronně a po jeho skončení se má přesunout focus na ListBox, který slouží jako zvukové menu ve hře pro nevidomé. Menu po té přehraje zvuk s popisem první položky v menu. Ale v jádru jde jen o ty dva po sobě přehrávané zvuky.

Zkusil jsem: Mám třídu SoundMachine, která spravuje jednotlivé zvuky, dále pak třídu SoundItem, která spravuje jeden zvuk. Můj poslední pokus vypadal následovně:
metoda SoundItem.PlaySync uloží do SoundMachine handle synchronního zvuku a spustí přehrávání.
Metoda SoundItem.Play zkontroluje, je-li aktivní nějaký synchronní zvuk. Pokud ano, nastaví callback, který po skočení prvního zvuku přehraje nový zvuk. A nefunguje to!

public void Play()
{
int oldHandle = )SoundMachine­.LastSyncSoundHan­dle;
if (oldHandle == -1 && BASS_ChannelI­sActive(oldHan­dle) != BASSActive.BAS­S_ACTIVE_PLAY­ING) // žádný synchronní zvuk
BASS_ChannelPla­y(_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.Las­tSyncSoundHan­dle = -1;
smaž číslo starého zvuku
BASS_ChannelPla­y(_handle, true); // přehraj nový
};

Bass.BASS_Chan­nelSetSync(ol­dHandle, BASSSync.BASS_SYN­C_END, 0, p, (IntPtr)0); // nastav callback
}if
}
fnc

Chci docílit: Chci, aby se přehrál jeden konkrétní zvuk, a teprve po jeho skončení se má přehrát druhý zvuk.

 
Odpovědět
21.7.2018 10:12
Avatar
Lukáš Vámoš:21.7.2018 13:02

Vyřešeno!
Jednoduše jsem použil uspání vlákna na dobu trvání zvuku.

 
Nahoru Odpovědět
21.7.2018 13:02
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.

Zobrazeno 2 zpráv z 2.