![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Mar 2008
Сообщений: 33
|
Есть два мувика(исходники прилагаются - 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() Последний раз редактировалось wolas; 11.07.2008 в 16:59. |
|
|||||
|
Регистрация: Mar 2008
Сообщений: 33
|
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() Вот только не могу понять почему в первом варианте без ошибок. Да и меня второй в общем-то устраивает, разве только если видео само не стартует, а так если бы ошибки не всплывали каждый раз, я бы и не заметил... блин... Последний раз редактировалось wolas; 12.07.2008 в 03:15. |
|
|||||
|
Modus ponens
|
Ок, объясняю =)
в первом случае сорс, или как там оно называется заменялось еще до того, как компонент инициализировался (т.е. скрипт на таймлайне выполнялся раньше конструктора компонента - поэтому ошибки не возникало (т.е. когда компонент понимал, что ему нужно что-то грузить, сорс уже был лихо заменен на новый). Загрузка ХМЛя, пусть и локально все равно произойдет пожже инициализации компонента - вот он и пытался сначала загрузить какой-то левый сорс, который был указан у него в настройках. Левый сорс == videoInstructions.flv (этого файла не было в архиве вместе со всем остальным), вот его он и пытался грузить первым.
__________________
Hell is the possibility of sanity |
|
|||||
|
Регистрация: Mar 2008
Сообщений: 33
|
wvxvw спасибо, очень доходчиво
![]() Проанализировав ваш комментарий, я понял что нужно добавить. А именно, после первого слушателя ХМЛзагрузчика нужно добавить второй, вот такой: может кому из новичков, таких как я, поможет.... зы и ваша правда, нужно сделать правильный сорс....иначе видео не стартует автоматически, но ошибок уже нет... Спасибо за поддержку! Последний раз редактировалось wolas; 12.07.2008 в 16:19. |
![]() |
![]() |
Часовой пояс GMT +4, время: 09:03. |
|
|
« Предыдущая тема | Следующая тема » |
|
|