|
|
 |

 |
Урок создания flash видео плеера |
Флеш примеры и уроки |
 |
 |
Рассмотрим пример создания флеш проигрывателя для видео файлов, который можно установить на свой сайт, позволив посетителям сайта смотреть видео на сайте без скачивания при помощи технологии Adobe Flash, на языке actionscript 2. Обратите внимание, что flash плеер может воспроизводить видео только одно формата – flv. Плеер будет состоять из одного кадра. На сцене должны быть: 1) Видео-символ (myVideo). В свойствах нужно указать Video (actionscript controlled). 2) Кнопка или мувиклип, который будет останавливать воспроизведение (кнопка пауза). Instance name - p_btn. 3) Над этой кнопкой нужно разместить клипы – значки воспроизведения и паузы (play_btn и pause_btn). 4) Мувиклип vol, состоящий из двух мувиклипов – полосок, индикатор/регулятор громкости. На первом слое (нижнем) должен быть мувиклип fon, над ним – bar, идентичный по размеру, но другого цвета. 5) Клип progress_bar, похожий на клип vol. На нижнем слое клип fon, на среднем - flv_load, на самом высшем – bar. После того, как вы сделали оболочку плеера, вам остаётся только добавить в кадр код: stop(); // останавливаем воспроизведение // ставим ширину равной нулю (скрываем) индикаторы загрузки и позиции воспроизведения progress_bar.flv_load._width = 0; progress_bar.bar._width = 0; pause_btn._visible = false; // скрываем кнопку пауза //isPlaying - булева величина, которая показывает, идёт ли сейчас подгрузка видео isPlaying = false;
link = '1.flv';// ссылка на видео файл для воспроизведения (flv)
// нажатие на кноку play/pause p_btn.onRelease = function() { if (!isPlaying) {// если подгрузка вижео ещё не начиналась _root.nc = new NetConnection(); // экземпляр класса NetConnection _root.nc.connect(null); _root.my_ns = new NetStream(_root.nc);// экземляр класса NetStream setPlayBtn(false); // скрываем кнопку play, показываем кнопку pause // "прикрепляем" поток видео (класс NetStream) к видео-символу myVideo.attachVideo(_root.my_ns); _root.my_ns.play(link); // при получении данных о длительности видео _root.my_ns.onMetaData = function(infoObject:Object) { totalTime = infoObject.duration;//сохраняем в отдельную переменную }; // при завершении загрузки видео _root.my_ns.onStatus = function(info) { if (info.code == "NetStream.Play.Stop") { isPlaying = false; setPlayBtn(true); progress_bar.bar._width = 0; } } isPlaying = true; // значит, что видео начало подгружаться } else // если видео уже грузится if (pause_btn._visible) { // и если сейчас плеер не на паузе // ставим видео на паузу _root.my_ns.pause(true); // запоминаем позицию воспроизведения current = _root.my_ns.time; // скрываем кнопку pause, показываем кнопку play setPlayBtn(true); } else { // если плеер на паузе // перематываем видео на место, где остановились current = _root.my_ns.time; // и продолжаем воспроизведение _root.my_ns.pause(false); // скрываем кнопку play, показываем кнопку pause setPlayBtn(false); } }
onEnterFrame = function() { if (isPlaying) { setBar(); } //считаем проценты, меняем ширину полоски - индикатора загрузки видео во flash плеер current = _root.my_ns.time; total = _root.my_ns.bytesTotal; // "вес" видео в байтах loaded = _root.my_ns.bytesLoaded; // количество загрженых байт percent = (loaded/total); // соотношение полного веса к загруженой части // в зависимости от загруженой части, меняем длину зелёной полоски - индикатора progress_bar.flv_load._width = (percent * progress_bar.fon._width); } // setBar - функция, которая будет отображать прогресс вопроизведения видео в плеере // при вызове позиция передаётся как процент (от 0 до 100) function setBar(percent:Number) { if (percent == undefined) percent = Math.floor(_root.my_ns.time/totalTime*100); // меняем ширинц полоски-индикатора progress_bar.bar._width = (percent/100 * progress_bar.fon._width); }
// нажатие на полоску - индикатор загрузки // именно на этот индикатор, чтобы нельзы было перепрыгвать на незагруженные участки progress_bar.flv_load.onRelease = function() { // вызов функции scrubbing, которая отвечает за перемотку на нужный моммент времени scrubbing(Math.floor((progress_bar._xmouse*100)/progress_bar._width)); }
function scrubbing(p) { // функция для перемтоки видео isEnd = false; setPlayBtn(false); _root.my_ns.seek(p*totalTime/100); _root.my_ns.pause(false); }
// функция, которая показывает/прячет кнопки play и pause function setPlayBtn(b) { play_btn._visible = b; pause_btn._visible = !b; }
// создаём обьект класса Sound, который будет охватывать все звуки в фильме sound = new Sound(); // регулировка громкости vol.onRelease = function() { // клик по индикатору громкости vol.bar._width = vol._xmouse;// меняем ширину индикатора // меняем громость звука sound.setVolume(vol._xmouse/vol._width * 100); } Ниже вы можете увидеть мой пример флеш видео плеера, который легко можно поставить себе на сайт. Скачать пример с исходником
Почитать ещё:
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
Просмотров: 58525 |
 |
 |
#22 написал: catta (5 мая 2010 14:33) |
 |
 |


Группа: Гости Регистрация: -- |
Появилось еще пара вопросов, скажите пожалуйста, вот я добавила кнопку стоп, она абсолютно функциональна, только вот одно но, при нажатии на нее, видео останавливается на том же кадре, что и было, то есть визуально для пользователя она похожа на паузу, но при последующем нажатии на кнопку Play, видео проигрывается с начала, скажите пожалуйста, как при нажатии на кнопку стоп сделать, например, черный экран? (есть конечно выход с двумя кадрами, но так поступать не хочется). И второй вопрос, как можно вытащить текущий уровень громкости, то есть, я добавила кнопку включить и выключить звук, при выключении то проблем не возникает, а вот при включении хотелось бы чтобы звук был на том же уровне что и до выключения.
Если ответите, заранее большое спасибо. |
|
 |
 |
ICQ: -- |
[цитировать] |
 |
 |
#23 написал: admin (5 мая 2010 14:40) |
 |
 |


Группа: Администраторы Регистрация: 5.02.2009 |
1) Попробуйте использовать _root.my_ns.stop();2) sound.getVolume() возвратит текущий уровень громкости звука. Ещё, после строки if (!isPlaying) { можно добавить: sound.setVolume(vol._xmouse/vol._width * 100); |
|
 |
 |
ICQ: -- |
[цитировать] |
 |
Опечатались, когда набирали запрос? Не беда! :) фвщиу адфыр ehjrb bc[jlybrb фсешщтыскшзе akti флаш flesh crfxfnm
|