Archive for 3 сентября, 2011
Введение в Silverlight 5 (часть 3)
Продолжаем рассматривать новые возможности Silverlight 5, тем более, что вчера появился Release Candidate. Прежде чем перейти к 3D и связыванию с данными, рассмотрим массу небольших нововведений, которые могут сделать жизнь разработчика более приятной.
Установка имени файла по умолчанию в SaveFileDialog
Начнем сегодняшний обзор с улучшений в элементе управления SaveFileDialog. Теперь при вызове этого диалогового окна, можно установить имя файла (как и список расширений), которое будет отображаться по умолчанию, как имя файла, предлагаемого для записи. Вот как это выглядит:
SaveFileDialog dialog = new SaveFileDialog();
dialog.DefaultFileName = "hello.txt";
dialog.ShowDialog();
Кроме описанной возможности, появилось свойство InitialDirectory, позволяющее задать директорию, которая будет открыта в диалоге по умолчанию.
Улучшение работы с аудио
В Silverlight 5 стала доступна библиотека по работе с Media. Классы этой библиотеки представлены пространством имен Microsoft.Xna.Framework.Audio. Нетрудно догадаться, что данный шаг выполнен в рамках интеграции с XNA библиотеками, которые можно использовать и в Silverlight (это аудио и 3D).
Новое пространство имен содержит два основных класса, позволяющих создавать аудио эффекты в процессе работы Silverlight приложения. Файлы, доступные для проигрывания, должны быть в формате WAV и могут быть загружены с помощью класса SoundEffect. Конструктор этого класса получает ссылку на набор данных и(или) настройки аудио.
Создание конкретного экземпляра можно также выполнить с помощью статического метода FromStream, получающего ссылку на поток в качестве параметров.
Проигрывание эффекта осуществляется с помощью метода Play. Каких-то других методов SoundEffect не имеет, но это вовсе не означает, что отдельно взятым объектом нельзя управлять. Так, если Вы хотите не просто воспроизвести эффект, но и добавить элементы управления аудио (громкость, пауза и т .д.), то вместо метода Play следует вызывать метод CreateInstance, создающий конкретный экземпляр на базе SoundEffect, и возвращающий ссылку типа SoundEffectInstance, которая позволит управлять нашим аудио файлом.
SoundEffect sEffect=SoundEffect.FromStream(streamInfo.Stream);
sEffect.Play();
Изменение скорости проигрывания медиа
В Silverlight 5 произошли улучшения и в MediaElement элементе. Теперь этот элемент управления содержит такое свойство как PlaybackRate и событие RateChanged. Свойство позволяет задавать скорость проигрывания видео, а событие – реагировать на изменение свойства.
Нужно отметить, что при тестировании свойства у меня проявилась странная бага в дизайнере: при изменении свойства PlaybackRate через окно свойств, оно остается неизменным, показывая значение 1. При этом в XAML файле оно модифицируется, как и положено.
Возможно, это только моя проблема (какие версии я тут только не ставил), но будьте готовы к такому поведению.
Поддержка пульта дистанционного управления
Не было возможности проверить данную функциональность, так как пульт к Media Center у меня отсутствует (или к Xbox), но, теоретически Silverlight 5 поддерживает и работу с пультом. Данная функциональность стала доступна благодаря поддержке события MediaCommand, которое доступно у всех UIElement. Иными словами, если Вы хотите обрабатывать нажатия кнопок пульта, то Вам следует обработать это событие у родительского контейнера (от дочерних элементов оно как раз туда и свалится). Чтобы понять, какая кнопка на пульте была нажата, обработчик события получает доступ к свойству в MediaCommandEventArgs, содержащему свойство перечислимого типа MediaCommand. Последнее и содержит информацию по нажатой кнопке.