Форум 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)
-   -   Как узнать длительность нескольких видео? (http://www.flasher.ru/forum/showthread.php?t=146256)

dlinnii 02.11.2010 14:27

Как узнать длительность нескольких видео?
 
Гружу кучу видео (ссылки в XML, заранее кол-во неизвестно), каждое в свой NetStream

Код AS1/AS2:

my_xml.onLoad = function(success)
{
        if (success)
        {
                xmlNode = my_xml.firstChild.childNodes;
                videosTotal = xmlNode.length;
                for (i = 0; i < videosTotal; i++)
                {
                        videosArray[i] = xmlNode[i].childNodes[0].firstChild.nodeValue;
                }
                for (i = 0; i < videosTotal; i++)
                {
                        _root["nc" + i] = new NetConnection();
                        _root["nc" + i].connect(null);
                        _root["my_ns" + i] = new NetStream(_root["nc" + i]);
                        duplicateMovieClip(videoClip, "videoClip" + i, i);
                        _root["videoClip" + i].myVideo.attachVideo(_root["my_ns" + i]);
 
                        // Определяю длительность каждого, но здесь проблема
                        _root["my_ns" + i].onMetaData = function(infoObject:Object)
                        {
                                durationArray[i] = infoObject.duration;
                        };
                        _root["my_ns" + i].play(videosArray[i]);
                        _root["my_ns" + i].seek(0);
                        _root["my_ns" + i].pause(true);
                        _root["videoClip" + i].swapDepths(_root.getNextHighestDepth());
                }
        }
};
my_xml.load("video.xml");

Проблема в том, что пытаюсь занести в массив durationArray продолжительность текущего потока ["my_ns" + i]. Если трэйсить это место, i всегда равно 5 (тестирую на 5 видео), поэтому текущая продолжительность записывается на 5 индекс в массиве, переписывая его каждый раз. Как можно исправить?

PS я делал просто
Код AS1/AS2:

durationArray.push = infoObject.duration;

Так работает, заносит все на свои места, но флэш ведет себя странно и порядок занесения элементов получается каждый раз рандомный, несмотря на перебор от 1 до 4 о_О От размера видео файла не зависит. Буду признателен за объяснение сего факта.

Bred45 02.11.2010 15:22

_root["my_ns" + i].onMetaData срабатывает для кажого видео в свое время. Тут надо избавляться от i, вводя идентификатор для кажого клипа.
Как-то так:
Код AS1/AS2:

_root["my_ns"+i].id = i;
_root["my_ns"+i].onMetaData = function(infoObject:Object) {
        durationArray[this.id] = infoObject.duration;
};



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

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