Sound

hlavní obrázek

Existuje mnoho způsobů, jak pomocí zvuku vylepšit aplikaci. Zvuk můžete použít k doplnění dalších prvků uživatelského rozhraní, které uživatelům umožní rozpoznat události audibálně. Zvuk může být účinný prvek uživatelského rozhraní pro osoby se zrakovým postižením. Zvuk můžete použít k vytvoření atmosféry, která uživatele ponoří; můžete například přehrávat hudební doprovod s hravým motivem na pozadí logické hry, nebo použít temné zvukové efekty pro hororovou nebo survival hru.

Příklady

Otevření aplikace Galerie WinUI 3 a zobrazení zvuku v akci

Ikona galerie WinUI 3 Aplikace Galerie WinUI 3 obsahuje interaktivní příklady ovládacích prvků a funkcí WinUI. Získejte aplikaci z Microsoft Store nebo vyhledejte zdrojový kód na GitHub.

Globalní rozhraní API zvuku

WinUI poskytuje snadno přístupný zvukový systém, který umožňuje jednoduše "překlopit přepínač" a získat imerzivní zvukové prostředí v celé aplikaci.

ElementSoundPlayer je integrovaný zvukový systém v xaml a když zapnete všechny výchozí ovládací prvky, přehraje zvuky automaticky.

ElementSoundPlayer.State = ElementSoundPlayerState.On;

ElementSoundPlayer má tři různé stavy: Zapnuto a Auto.

Pokud je nastavená možnost Vypnuto, bez ohledu na to, kde je vaše aplikace spuštěná, zvuk se nikdy nepřehraje. Pokud je nastavená možnost Zvuk na pro vaši aplikaci se bude přehrávat na každé platformě.

Povolení ElementSoundPlayer automaticky povolí i prostorový zvuk (3D zvuk). Chcete-li zakázat 3D zvuk (zatímco zvuk zůstane zapnutý), zakažte SpatialAudioMode ElementSoundPlayer:

ElementSoundPlayer.SpatialAudioMode = ElementSpatialAudioMode.Off

SpatialAudioMode vlastnost může mít tyto hodnoty:

  • Automatický režim: Prostorový zvuk se zapne, když je zvuk zapnutý.
  • Vypnuto: Prostorový zvuk je vždy vypnutý, i když je zvuk zapnutý.
  • U: Prostorový zvuk se bude vždy přehrávat.

Další informace o prostorovém zvuku a o tom, jak ho XAML zpracovává, najdete v tématu AudioGraph – Spatial Audio.

Přepis zvukového hlasitosti

Všechny zvuky v aplikaci lze ztlumit pomocí ovládání hlasitosti . Zvuky v aplikaci ale nemůžou být hlasitější než systémová hlasitost.

Pokud chcete nastavit úroveň hlasitosti aplikace, zavolejte:

ElementSoundPlayer.Volume = 0.5;

Kde je maximální hlasitost (vzhledem k systémové hlasitosti) 1,0 a minimální 0,0 (v podstatě ticho).

Stav úrovně řízení

Pokud není požadovaný výchozí zvuk ovládacího prvku, můžete ho zakázat. To se provádí prostřednictvím ElementSoundMode na ovládacím prvku.

ElementSoundMode má tři stavy: Default, FocusOnly a Off. Pokud není nastavená, je výchozí. Pokud je nastavená možnost FocusOnly, přehrají se jenom zvuky fokusu. Pokud je tato možnost vypnutá, nepřehrávají se pro tento ovládací prvek žádné zvuky.

<Button Name="ButtonName" Content="More Info" ElementSoundMode="Off"/>
ButtonName.ElementSoundMode = ElementSoundMode.Off;

Je to správný zvuk?

Při vytváření vlastního ovládacího prvku nebo při změně zvuku existujícího ovládacího prvku je důležité pochopit použití všech zvuků, které systém poskytuje.

Každý zvuk souvisí s určitou základní interakcí uživatele, a i když se zvuky dají přizpůsobit tak, aby se přehrávaly při jakékoli interakci, slouží tato část ke znázornění scénářů, ve kterých by se zvuky měly používat k zachování konzistentního prostředí ve všech aplikacích WinUI.

Vyvolání elementu

Nejběžnějším zvukem aktivovaným ovládacím prvkem v našem systému je zvuk vyvolání. Tento zvuk se přehraje, když uživatel vyvolá ovládací prvek klepnutím, kliknutím, stisknutím klávesy Enter nebo mezerníku nebo stisknutím tlačítka A na gamepadu.

Obvykle se tento zvuk přehrával jenom v případě, že uživatel explicitně cílí na jednoduchý ovládací prvek nebo ovládací část prostřednictvím vstupního zařízení.

Pokud chcete přehrát tento zvuk z jakékoli řídicí události, jednoduše zavolejte metodu Přehrát z ElementSoundPlayer a předejte elementSound.Invoke:

ElementSoundPlayer.Play(ElementSoundKind.Invoke);

Zobrazení a skrytí obsahu

V XAML existuje mnoho vyskakovacích oken, dialogů a přepínatelných uživatelských rozhraní, a každá akce, která spustí jednu z těchto překryvných vrstev, by měla volat zvuk Zobrazit nebo Skrýt.

Při zobrazení překryvného okna obsahu by měl být vyvolán zvuk pro Zobrazit:

ElementSoundPlayer.Play(ElementSoundKind.Show);

Naopak při zavření překryvného okna obsahu (nebo zavření světla) by měl být volán zvuk Skrýt:

ElementSoundPlayer.Play(ElementSoundKind.Hide);

Při navigaci mezi panely nebo zobrazeními na stránce aplikace (viz NavigationView) je obvykle obousměrný pohyb. To znamená, že se můžete přesunout na další zobrazení nebo předchozí zobrazení, aniž byste opustili aktuální stránku aplikace, kterou právě používáte.

Zvukové zážitky týkající se tohoto navigačního konceptu zahrnují zvuky MovePrevious a MoveNext.

Při přechodu na zobrazení nebo panel, který je považován za další položku v seznamu, zavolejte:

ElementSoundPlayer.Play(ElementSoundKind.MoveNext);

Když v seznamu přecházíte na předchozí zobrazení nebo panel, je považovaná za předchozí položku, volejte:

ElementSoundPlayer.Play(ElementSoundKind.MovePrevious);

Navigace zpět

Při přechodu z aktuální stránky na předchozí v aplikaci by měl být spuštěn zvuk GoBack.

ElementSoundPlayer.Play(ElementSoundKind.GoBack);

Zaměření na prvek

Zvuk Fokus je jediný implicitní zvuk v našem systému. To znamená, že uživatel s ničím přímo neinteraguje, ale stále slyší zvuk.

Fokusování probíhá, když uživatel naviguje aplikací, může to být s použitím gamepadu, klávesnice, dálkového ovladače nebo Kinectu. Obvykle se Fokus zvuk nepřehrává při událostech PointerEntered ani při najetí myší.

Pokud chcete nastavit ovládací prvek tak, aby se přehrál zvuk zaostření, když ovládací prvek přijme fokus, zavolejte:

ElementSoundPlayer.Play(ElementSoundKind.Focus);

Zvukové efekty pro cyklistiku

Jako doplněk k funkci volání ElementSound.Focusbude zvukový systém ve výchozím nastavení střídat 4 různé zvuky ke každému navigačnímu spouštěči. To znamená, že žádné dva stejné zvuky zaostření nebudou přehrávány bezprostředně po sobě.

Účelem této funkce cyklování je zabránit tomu, aby se fokusové zvuky staly monotónními a znatelnými pro uživatele; fokusové zvuky se budou přehrávat nejčastěji, a proto by měly být co možná nejméně nápadné.