На форуме 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);
};
Как видите она использует предыдущий код, и в ней можно указать количество повторов. Если не хочется писать все это заново, то ловим исходник.