Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Проблемы с Flash видео плеером из XML! (http://www.flasher.ru/forum/showthread.php?t=125802)

Weather 02.06.2009 15:47

Проблемы с Flash видео плеером из XML!
 
Сделал плеер с подгрузкой данных из XML, но есть проблемы, каждый ролик не доигрывается до конца, как это исправить?

Вот код флэшки:

Код AS1/AS2:

 
//Для начала создадим все нужные нам переменные
var video_num; //переменная для контроля видео
var array_length; //общее кол-во видео
var video_progress; //прогресс видео
var var_id = new Array(); //Массивы для данных
var var_name = new Array();
var var_url = new Array();
var var_data = new Array();
b_play._visible = false;
var myXML:XML = new XML(); //Объект XML
myXML.load("flash/tv/video.xml"); //Загружаем XML
myXML.onLoad = function(success) { //После загрузки
        if (success) { //Если загрузка успешна
                xmlNode = this.firstChild; //Открываем первый тег ХМЛ
                for (var i=0; i<myXML.firstChild.childNodes.length; i++) { //Цикл создания массивов
                        var_id[i] = xmlNode.childNodes[i].childNodes[0].firstChild.nodeValue;
                        var_name[i] = xmlNode.childNodes[i].childNodes[1].firstChild.nodeValue;
                        var_url[i] = xmlNode.childNodes[i].childNodes[2].firstChild.nodeValue;
                        var_data[i] = xmlNode.childNodes[i].childNodes[3].firstChild.nodeValue;
                }
                array_length = var_id.length;
                video_num = 0;
        if (video_progress == null or video_progress == 0) { //Если до этого мы не нажали паузу, то
                b_pause._visible = true;
                player.contentPath = "/flash/ftp/uploads/video/"+var_url[video_num]; //Заставляем плеер играть видео, адресс в массыве которого равен video_num
                video_info.text = "Играет: "+var_name[video_num]; //Текст в видео инфо
                }
        }
        else {
                trace("Не могу загрузить xml файл");
        }
};
b_play.onRelease = function() { //Действие для кнопки - плей
        if (video_progress == null or video_progress == 0) { //Если до этого мы не нажали паузу, то
                this._visible = false;
                b_pause._visible = true;
                player.contentPath = "/flash/ftp/uploads/video/"+var_url[video_num]; //Заставляем плеер играть видео, адресс в массыве которого равен video_num
                video_info.text = "Играет: "+var_name[video_num]; //Текст в видео инфо
        }
        else { //Если пауза была нажата
                player.play(video_progress);
                this._visible = false;
                b_pause._visible = true;
                video_info.text = "Играет: "+var_name[video_num];//Текст в видео инфо
        }
}
b_pause.onRelease = function() { //Действие для кнопки - пауза
        video_progress = player.playheadTime; //Запоминаем где мы остановились
        player.pause(); //Прекращаем воспроизведение
        this._visible = false;
        b_play._visible = true;
        video_info.text = "Пауза: "+var_name[video_num]; //Текст в видео инфо
}
b_stop.onRelease = function() {
        player.stop(); //Прекращаем воспроизведение
        b_play._visible = true;
        b_pause._visible = false;
        video_progress = 0.001; //Обнуляем значение паузы
}
b_next.onRelease = function() { //Действие для кнопки - следующее видео
        if (array_length - 1 > video_num) { //Если у нас еще не последнее видео
            b_play._visible = false;
                b_pause._visible = true;
                video_progress = null; //Обнуляем значение паузы
                video_num++; //Значение видео делаем больше
                video_info.text = "Ожидает: "+var_name[video_num]; //Текст в видео инфо
                player.contentPath = "/flash/ftp/uploads/video/"+var_url[video_num];
            player.play();
        }
}
b_prev.onRelease = function() { //Действие для кнопки - предыдущее видео
        if(video_num != 0) { //Если у нас не первое видео
                b_play._visible = false;
                b_pause._visible = true;
                video_progress = null; //Обнуляем значение паузы
                video_num--;
                video_info.text = "Ожидает: "+var_name[video_num]; //Текст в видео инфо
                player.contentPath = "/flash/ftp/uploads/video/"+var_url[video_num];
                player.play();
        }
}
b_vol_max.onRelease = function() { //Действия для кнопки - звук на максимум
        player.volume = 100;
}
b_vol_cet1.onRelease = function() { //Действие для кнопки - среднее значение звука 2
        player.volume = 40;
}
b_vol_cet2.onRelease = function() { //Действие для кнопки - среднее значение звука 1
        player.volume = 60;
}
b_vol_min.onRelease = function() { //Действия для кнопки - звук на минимум
        player.volume = 10;
}
p_bar.onRelease = function() { //Действия для перемотки видео
        this.onePixOnOneSec = player.totalTime / this._width; //определяем значение 1пх. прогресс бара, на N сек. видео
        this.goTo = Math.round(this.onePixOnOneSec * this._xmouse); //Определяем значение N сек. видео, равное участку куда кликнул пользователь
        player.pause(); //Видео на паузу
        player.play(this.goTo); //Воспроизводим видео с места определенного мат. вычислениями
}
setInterval(function() { //Выполняем функцию раз в определеннео время
                                          var loaded = Math.round(player.bytesLoaded / player.bytesTotal * 100);
                                          var progres = Math.round(player.playheadTime / player.totalTime * 100);
                                          p_bar.gotoAndStop(loaded);
                                          p_bar_2.gotoAndStop(progres);
                                          if (progres == 100) { //Если выдео закончилось, пробуем перейти на след. видео
                                                  if (array_length - 1 > video_num) {
                                                          video_num++;
                                                          player.contentPath = "/flash/ftp/uploads/video/"+var_url[video_num];
                                                          player.play(); //Прекращаем воспроизведение, так как мы ждем действий от пользователя
                                                  }
                                                  b_pause._visible = true;
                                                  b_play._visible = false;
                                                  video_progress = 0.001; //Обнуляем значение паузы
                                                  video_info.text = "Ожидает: "+var_name[video_num]; //Текст в видео инфо
                                          }
                                          }, 100);

Пример XML:

Код:

<?xml version="1.0" encoding="utf-8"?>
<video>
<vid>
<id>0</id>
<name>01_zastavka.flv</name>
<url>01_zastavka.flv</url>
</vid>
<vid>
<id>1</id>
<name>02_bikov.flv</name>
<url>02_bikov.flv</url>
</vid>
<vid>
<id>2</id>
<name>03_timur.flv</name>
<url>03_timur.flv</url>
</vid>
<vid>
<id>3</id>
<name>04_dedenev.flv</name>
<url>04_dedenev.flv</url>
</vid><vid>
<id>4</id>
<name>05_kvasha.flv</name>
<url>05_kvasha.flv</url>
</vid>
<vid>
<id>5</id>
<name>guitar.flv</name>
<url>guitar.flv</url>
</vid>
</video>

Добавлено через 21 час 38 минут
Ну что, никто типа не может помочь? Неужели не видели ничего подобного?


Часовой пояс GMT +4, время: 15:04.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.