Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Подгрузка FLV через XML. VideoError: 1004: Invalid source (http://www.flasher.ru/forum/showthread.php?t=113871)

wolas 11.07.2008 16:47

Подгрузка FLV через XML. VideoError: 1004: Invalid source
 
Есть два мувика(исходники прилагаются - http://www.zone-rouge.net/clips.rar ), которые при нажатии на кнопки подгружают следующую или предыдущую ФЛВишку из аррея. Проблема в следующем.
Если просто создать аррей и ручками вбить в него имена файлов, то всё работает нормально. Вот код:

Код:

import fl.video.FLVPlayback;

videoInstructions.playPauseButton = player;
videoInstructions.seekBar = seeker;
videoInstructions.volumeBar = volBar;

var clips:Array = ["01.flv", "02.flv"];
var index:Number = 0;


vid1_btn.addEventListener(MouseEvent.CLICK, clickVid1);
vid2_btn.addEventListener(MouseEvent.CLICK, clickVid2);



function nextClip():void
{
MovieClip(this.root).videoInstructions.source = clips[index];
}


function clickVid1(event:MouseEvent):void {
        nextClip();
        index = index + 1;
        if (index > (clips.length - 1)) {
                index = 0;
        }
}

function clickVid2(event:MouseEvent):void
{
        nextClip();
index = index - 1;
        if (index < 0) {
                index = clips.length - 1;
        }
}
nextClip();



НО, необходимо подрузку реализовать через XML.
Вот, немного изменил предыдущий код(чтобы было легче,изменения промаркировал):




Код:

import fl.video.FLVPlayback;

videoInstructions.playPauseButton = player;
videoInstructions.seekBar = seeker;
videoInstructions.volumeBar = volBar;


var clips:Array = new Array(); //изменения ********************
var numImages:Number; //изменения ********************
var index:Number = 0;

var xmlLoader:URLLoader = new URLLoader(new URLRequest("clips.xml")); //изменения ********************

xmlLoader.addEventListener(Event.COMPLETE, initData); //изменения ********************

function initData(evt:Event):void { //изменения ********************
        var dataXML:XML = XML(xmlLoader.data); //изменения ********************
        var j:int; //изменения ********************
               
        numImages = dataXML.clips.length(); //изменения ********************
        for (j=0; j<numImages; j++) { //изменения ********************
                clips[j] = dataXML.clips[j].@filename.toString(); //изменения ********************
        }
}
vid1_btn.addEventListener(MouseEvent.CLICK, clickVid1);
vid2_btn.addEventListener(MouseEvent.CLICK, clickVid2);


function nextClip():void
{
MovieClip(this.root).videoInstructions.source = clips[index];
}



function clickVid1(event:MouseEvent):void {
        nextClip();
        index = index + 1;
        if (index > (clips.length - 1)) {
                index = 0;
        }
}

function clickVid2(event:MouseEvent):void
{
        nextClip();
index = index - 1;
        if (index < 0) {
                index = clips.length - 1;
        }
}

nextClip();



Резальтат,- выдаются две шибки следующего(см ниже) рода.
НО, при этом всё работает как и в первом случае, только при старте мувика ошибки вылетают и видео не автоматически начинает проигрываться, а после нажатия кнопок.

Поскажите ребят, в чём проблема? Казалось бы видео он находит и проигрывает, но почему-то пишет ошибки. VideoError: 1004: Invalid source

И причём здесь NCManager, VideoPlayer и FLVPlayback если в первом случае всё нормально и без ошибок?

Помогите пожалуйста. Сам я не профи, только учусь.



Код:

VideoError: 1004: Invalid source
        at fl.video::NCManager/connectToURL()
        at fl.video::VideoPlayer/http://www.adobe.com/2007/flash/flvplayback/internal::_load()
        at fl.video::VideoPlayer/load()
        at fl.video::FLVPlayback/doContentPathConnect()
        at fl.video::FLVPlayback/set source()
        at video44XML_fla::MainTimeline/nextClip()
        at video44XML_fla::MainTimeline/frame1()


Код:

VideoError: 1004: Invalid source
        at fl.video::NCManager/connectToURL()
        at fl.video::VideoPlayer/http://www.adobe.com/2007/flash/flvplayback/internal::_load()
        at fl.video::VideoPlayer/load()
        at fl.video::FLVPlayback/doContentPathConnect()


wvxvw 11.07.2008 17:53

в параметрах компонента лежащего на сцене указан путь к несуществующему ФЛВ, вот он и ругается...

wolas 12.07.2008 03:13

wvxvw пасиба за ответ...

но я несколько раз менял флв компонент. В смысле удалял старый и импорировал новое видео...с тем клипом, который лежал в тойже папке, что и мувик

ну и все флвишники лежат там же где и исполняемый файл, почему тогда в первом случае нет ругани?
Я в принципе понял, что инвалид сорс, но если после нажатия кнопок(vid1_btn/
vid2_btn, следующий/ предыдущий клип) начинается проигрывание, то по логике вещей сорс вовсе не инвалид, и что-то тут в другом тема.
Вот я и чешу репу........

зы сейчас попробовал вписать путь в ХМЛе по разному(тупо полный путь, с именем диска и директориями)....таже фигня(ошибки, но после клика на кнопки всё проигрывается)...блин...почему..? В чем разница...? Может правда нужно где-то прописать эти классы:
at fl.video::NCManager/connectToURL()
at fl.video::VideoPlayer/http://www.adobe.com/2007/flash/flvplayback/internal::_load()
at fl.video::VideoPlayer/load()
at fl.video::FLVPlayback/doContentPathConnect()

Вот только не могу понять почему в первом варианте без ошибок. Да и меня второй в общем-то устраивает, разве только если видео само не стартует, а так если бы ошибки не всплывали каждый раз, я бы и не заметил...

блин...

wvxvw 12.07.2008 03:42

Ок, объясняю =)
в первом случае сорс, или как там оно называется заменялось еще до того, как компонент инициализировался (т.е. скрипт на таймлайне выполнялся раньше конструктора компонента - поэтому ошибки не возникало (т.е. когда компонент понимал, что ему нужно что-то грузить, сорс уже был лихо заменен на новый). Загрузка ХМЛя, пусть и локально все равно произойдет пожже инициализации компонента - вот он и пытался сначала загрузить какой-то левый сорс, который был указан у него в настройках.
Левый сорс == videoInstructions.flv (этого файла не было в архиве вместе со всем остальным), вот его он и пытался грузить первым.

wolas 12.07.2008 16:17

wvxvw спасибо, очень доходчиво :)

Проанализировав ваш комментарий, я понял что нужно добавить.
А именно, после первого слушателя ХМЛзагрузчика нужно добавить второй, вот такой:

Код:

xmlLoader.addEventListener(Event.INIT, nextClip);
может кому из новичков, таких как я, поможет....


зы и ваша правда, нужно сделать правильный сорс....иначе видео не стартует автоматически, но ошибок уже нет...

Спасибо за поддержку!


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

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