Опубликован: 15.06.2011 | Доступ: свободный | Студентов: 708 / 59 | Оценка: 4.25 / 4.00 | Длительность: 14:09:00
Самостоятельная работа 14:

Разработка простого медиа - плеера в среде Visual Studio 2010 используя Silverlight

< Лекция 14 || Самостоятельная работа 14: 12345678 || Лекция 15 >

17.Добавим в эти события код:

private void PositionSlider_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
  mediaElement1.Position = TimeSpan.FromSeconds(Convert.ToInt64
    (PositionSlider.Value * mediaElement1.NaturalDuration.TimeSpan.TotalSeconds));
  Timer.Text = string.Format("{0:00}:{1:00}", 
    mediaElement1.Position.Minutes, mediaElement1.Position.Seconds);
  mediaElement1.Play();
}
private void PositionSlider_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
  mediaElement1.Pause();
}

Данный фрагмент кода устанавливает положение воспроизводимого меди-файла на основе элемента управления PositionSlider. Элементу управления Timer присваиваются значения минут, секунд воспоизводимого видео.

18.Добавим в событие UserControl_Loaded следующий фрагмент кода:

PositionSlider.Value = 0;
            PositionSlider.Minimum = 0;
            PositionSlider.Maximum = 1;
            PositionSlider.LargeChange = 0.10;
            PositionSlider.SmallChange = 0.01;

Теперь сделаем так, что бы значение элемента управления PositionSlider и Timer изменялось по ходу воспроизведения видео.

19.Подключаем пространство имен ( NameSpace ):

using System.Windows.Threading;

20.Создадим объект класса DispatcherTimer:

DispatcherTimer VideoTimer;

21.В событие UserControl_Loaded добавим следующие строчки кода:

VideoTimer = new DispatcherTimer();
            VideoTimer.Interval = TimeSpan.FromMilliseconds(50);
            VideoTimer.Tick += new EventHandler(VideoTimer_Tick);

В данном фрагменте кода создается новый объект класса DispatcherTimer, после чего задается интервал выполнения события VideoTimer_Tick равный 50 миллисекундам ( TimeSpan.FromMilliseconds(50) ).

22.Теперь, создадим событие VideoTimer_Tick

void VideoTimer_Tick(object sender, EventArgs e)
{
  if (mediaElement1.NaturalDuration.TimeSpan.TotalSeconds > 0)
    {
      Timer.Text = string.Format("{0:00}:{1:00}", 
         mediaElement1.Position.Minutes, mediaElement1.Position.Seconds);
      PositionSlider.Value = mediaElement1.Position.TotalSeconds / 
         mediaElement1.NaturalDuration.TimeSpan.TotalSeconds;
    }
}

В данном фрагменте будет осуществляться синхронизация таймера ( Timer ) и полоски воспроизведения ( PositionSlider ) с воспроизводимым видео.

23.Создадим событие CurrentStateChanged элемента управления "MediaElement":


Рис. 28.19.

24.Добавим в событие CurrentStateChanged код:

private void mediaElement1_CurrentStateChanged(object sender, RoutedEventArgs e)
        {
         if (mediaElement1.CurrentState == MediaElementState.Playing)
            {
                VideoTimer.Start();
            }
            else
            {
                VideoTimer.Stop();
            }
        }

В данном фрагменте кода запускается или останавливается событие VideoTimer_Tick.

25.Запустим приложение. Откроется окно браузера и начнется воспроизведение видео-файла "test.wmv":


Рис. 28.20.
< Лекция 14 || Самостоятельная работа 14: 12345678 || Лекция 15 >