Звук

hero image

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

Примеры

Коллекция WinUI 2
WinUI Gallery

Если у вас установлено приложение коллекции WinUI 2, щелкните здесь, чтобы открыть приложение и просмотреть звук в действии.

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

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

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

ElementSoundPlayer.State = ElementSoundPlayerState.On;

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

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

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

ElementSoundPlayer.SpatialAudioMode = ElementSpatialAudioMode.Off

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

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

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

Звук для телевизора и Xbox

Звук имеет важное значение для взаимодействия с 3 метров, поэтому по умолчанию для ElementSoundPlayer установлено значение Auto. Это означает, что звук будет воспроизводиться, только когда приложение запущено на Xbox. Дополнительные сведения см. в разделе "Проектирование для Xbox и телевизора ".

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

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

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

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;

Выбор правильного звука

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

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

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

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

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

Чтобы воспроизводить звук при всех событиях элемента управления, вызовите метод 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 разных звука для каждого действия навигации. Это означает, что звуки фокуса, воспроизводимые один за другим, не повторяются.

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

Получение кода примера

  • Пример коллекции WinUI 2. Просмотрите все элементы управления XAML в интерактивном формате.