Pouze tento týden sleva až 80 % na e-learning týkající se C# .NET. Zároveň využij akci až 30 % zdarma při nákupu e-learningu - Více informací.
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í.
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
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
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.