Автоматический повтор видео в SL

На форуме Silverlight.ru появился вопрос о повторении видео-ролика бесконечно или необходимое количество раз. Сделать это очень просто, необходимо назначить слушателя события окончания видео.

Есть уйма способов решения. Приведу конкретный пример. Для начала создаем пустой JavaScript файл, в  который добавляем код:

//Количество повторений

var countRepeat = 2;

//Ссылка на слушателя события

var eventListener = null;

 

function MediaElement_Loaded(sender, e) {

    //Добавим слушателя события MediaEnded,

    //вызывается по окончании ролика

    eventListener = sender.addEventListener("MediaEnded",

      replayVideo);

}

function replayVideo(sender, e) {

    //Останавливаем видео, т.к. иначе реплей не начинается

    sender.stop(); 

    if(countRepeat < 0) {

        sender.play();

    } else if(countRepeat > 0) {

        //Начинаем проигрывание сначала

        sender.play();

        //Вычитаем счётчик

        countRepeat--;

    } else {

        //Удаляем слушателя

        sender.removeEventListener("MediaEnded",

          eventListener);

    }

}

Затем необходимо создать MediaElement и добавить атрибуты x:Name=”любое имя” и Loaded=”MediaElement_Loaded”. Здесь задается функция-обработчик, которая вызывается после загрузки медиа-элемента. Примерно так должен выглядеть ваш Xaml, естественно не считая другие элементы:

<Canvas

    xmlns="http://schemas.microsoft.com/client/2007"

    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

    Width="640" Height="480"

    Background="White"

    x:Name="Page"

    >

    

    <MediaElement Loaded="MediaElement_Loaded"

                x:Name="myVideo"

                Width="330"

                Height="227"

                Canvas.Left="62"

                Canvas.Top="78"

                Volume="1"

                Stretch="Fill"

                Source="Butterfly.wmv"/>

</Canvas>

Если хотите динамически создать реплей видео, то можно использовать следующую функцию:

//Конструктор принимает ссылку на 

//объект MediaElement и количество повторений

function repeatVideo(mediaElementLink, numberRepeat) {

    countRepeat = numberRepeat;

    eventListener = 

    mediaElementLink.addEventListener("MediaEnded",

     replayVideo);

};

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

Posted on 10.11.2007 16:47:38 by Admin

Permalink | Комментарии (0) | Post RSSRSS comment feed |

Categories: Silverlight | Video

Tags: , ,

Оценок нет

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Похожие записи

Добавить комментарий


(Отображает Gravatar)  

  Country flag

[b][/b] - [i][/i] - [u][/u]- [quote][/quote]



Предпросмотр

ноября 21. 2008 00:39