Звук

изображение героя

Существует множество способов использовать звук для улучшения приложения. Звук может дополнять другие элементы интерфейса, чтобы пользователи легко распознавали разные события. Звук может стать эффективным элементом интерфейса для пользователей с нарушениями зрения. Вы можете использовать звук для создания атмосферы, в которую погружается пользователь. Например, можно воспроизводить причудливую мелодию в фоновом режиме в игре-головоломке или использовать зловещие звуковые эффекты для игр в стиле "хоррор" и игр на выживание.

Примеры

Откройте приложение коллекции WinUI 3 и просмотрите звук в действии

Значок коллекции WinUI 3 Приложение WinUI 3 Gallery содержит интерактивные примеры элементов управления и функций WinUI. Получите приложение из Microsoft Store или просмотрите исходный код в GitHub.

Глобальный API звука

WinUI предоставляет легкодоступную звуковую систему, которая позволяет просто "перевернуть переключатель" и получить иммерсивный звуковой интерфейс во всем приложении.

ElementSoundPlayer — это интегрированная звуковая система в XAML. Если она включена, все стандартные элементы управления воспроизводят звуки автоматически.

ElementSoundPlayer.State = ElementSoundPlayerState.On;

ЭлементSoundPlayer имеет три разных состояния: Включено, Выключено и Авто.

Если задано значение Off, звук воспроизводиться не будет, независимо от того, где запущено приложение. Если задано значение On, звуки для вашего приложения будут воспроизводиться на всех платформах.

Включение ElementSoundPlayer автоматически приводит к активации пространственного (трехмерного) звука. Чтобы отключить трехмерный звук (но сохранить звук включенным), отключите SpatialAudioMode объекта ElementSoundPlayer:

ElementSoundPlayer.SpatialAudioMode = ElementSpatialAudioMode.Off

Свойство SpatialAudioMode может принимать следующие значения:

  • Авто: пространственный звук включается при включении звука.
  • Выкл. Пространственный звук всегда отключен, даже если звук включен.
  • Включено: пространственный звук всегда будет воспроизводиться.

См. подробнее о пространственном звуке и о том, как XAML его обрабатывает, в разделе AudioGraph — пространственный звук.

Переопределение громкости звука

Громкость всех звуков в приложении можно уменьшить с помощью регулятора громкости. Тем не менее, звуки в приложении не могут воспроизводиться громче уровня, настроенного в системе.

Чтобы настроить уровень громкости приложения, вызовите:

ElementSoundPlayer.Volume = 0.5;

Максимальная громкость составляет 1,0 (относительно громкости в системе), а минимальная — 0,0 (по сути это отсутствие звука).

Уровень управления - Состояние

Если нет необходимости воспроизводить звук элемента управления по умолчанию, его можно отключить. Это можно сделать с помощью ElementSoundMode в элементе управления.

ЭлементSoundMode имеет два состояния: Off и Default. По умолчанию установлено значение Default. Если задано значение Off, будут отключены все звуки, воспроизводимые элементом управления, за исключением фокуса.

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

Это правильный звук?

При создании пользовательского элемента управления или изменении звука существующего элемента управления важно учитывать принципы использования звуков, предоставляемых системой.

Каждый звук относится к определенному базовому взаимодействию с пользователем, и хотя звуки можно настроить для воспроизведения на любом взаимодействии, этот раздел служит для иллюстрации сценариев, в которых звуки должны использоваться для обеспечения согласованного взаимодействия во всех приложениях WinUI.

Вызов элемента

Наиболее распространенным звуком, воспроизводимым элементом управления, в нашей системе является звук Invoke (Вызов). Этот звук воспроизводится, когда пользователь вызывает элемент управления с помощью касания, щелчка, либо нажатия клавиши ВВОД, ПРОБЕЛ или кнопки "A" на геймпаде.

Обычно этот звук воспроизводится, только когда пользователь явно нацеливается на простой элемент управления или часть элемента управления посредством устройства ввода.

Чтобы воспроизвести этот звук из любого события управления, просто вызовите метод Play из ElementSoundPlayer и передайте ElementSound.Invoke:

ElementSoundPlayer.Play(ElementSoundKind.Invoke);

Отображение и скрытие содержимого

В XAML есть множество всплывающих элементов, диалоговых окон и закрывающихся элементов пользовательского интерфейса, и все действия, запускающие эти наложения, должны вызывать звук Show или Hide.

При появлении окна наложенного содержимого должен проигрываться звук Show:

ElementSoundPlayer.Play(ElementSoundKind.Show);

И наоборот, когда окно содержимого наложения закрывается или исчезает, должен вызываться звук Hide:

ElementSoundPlayer.Play(ElementSoundKind.Hide);

Навигация между панелями или представлениями в пределах страницы приложения (см. раздел NavigationView) — это обычно двунаправленное движение. Это означает, что можно перейти к следующему или предыдущему представлению либо панели, не покидая текущую страницу приложения.

Эта концепция навигации представлена звуками MovePrevious и MoveNext.

При переходе к представлению или панели, которая считается следующим элементом в списке, вызовите команду:

ElementSoundPlayer.Play(ElementSoundKind.MoveNext);

А при переходе к предыдущему представлению или панели, которая считается предыдущим элементом, вызовите команду:

ElementSoundPlayer.Play(ElementSoundKind.MovePrevious);

Обратная навигация

При переходе с текущей страницы на предыдущую страницу в приложении должен вызываться звук GoBack:

ElementSoundPlayer.Play(ElementSoundKind.GoBack);

Фокусировка на элементе

Звук Focus является единственным неявным звуком в нашей системе. Это означает, что пользователь слышит звук, даже если не взаимодействует ни с чем напрямую.

Фокусировка происходит, когда пользователь перемещается по приложению с помощью игрового контроллера, клавиатуры, пульта или устройства Kinect. Обычно звук Focusне воспроизводится при событиях PointerEntered или событиях наведения указателя мыши.

Чтобы настроить для элемента управления воспроизведение звука Focus при фокусировке на нем, вызовите команду:

ElementSoundPlayer.Play(ElementSoundKind.Focus);

Фокусировка циклических звуков

Для вызова ElementSound.Focus предоставляется дополнительная возможность — звуковая система по умолчанию воспроизводит по очереди 4 разных звука для каждого действия навигации. Это означает, что никакие два одинаковых звука фокуса не будут воспроизводиться подряд.

Целью этой функции с циклическим проигрыванием является предотвращение монотонности и заметности звуков фокуса, так как они воспроизводятся наиболее часто и должны оставаться самыми ненавязчивыми.