Форум 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=115643)

vigor 05.09.2008 13:34

Загрузка и проигрывание нескольких мувиков одновременно
 
Люди, нужна помощь!!!!

Мне необходимо сделать флэшку, которая бы в зависимости от количества параметров, передающихся через flashvars, открывала столько же FLVPlayback компонентов, в каждый из которых бы загружался свой flv-клип (адреса так же передаются через flashvars). Более того, необходимо сделать общее для них управление (тоесть play, stop, etc...). Ктонить знает как это проще всего реализовать?

Я попробовал через цикл по кол-ву мувиклипов:

Код:

var skinLocation:String = "file:///C:/Program Files/Macromedia/Flash 8/en/Configuration/Skins/ClearOverPlaySeekMute.swf";
var my_array:Array = (_level0.moviesArray).split(",");

for (var i = 0; i < array.length; i++) {
        _root.attachMovie("FLVPlayback", "my_player"+i, 10, {width:320, height:240, x:i*320, y:0, skinAutoHide:true, skin:skinLocation, contentPath:(1+1)+".flv"});
}

но он добавляет лишь один проигрыватель...

Еще одна проблема, это как потом к этим проигрывателям обращаться для того, чтобы сделать общее управление? Можно бы было по нажатию на клавишу допустим пробегать циклом по всем этим проигрывателям, но для этого нужно как то в цикле обращаться к каждому из них, а так как имена генерируются динамически при добавлении их в мувик, то я не вижу способа обращаться к ним в цикле....

Жду ваших предложений, идей, чего угодно!!!

Mur4ik 05.09.2008 18:28

в проблеме не разобрался до конца, но в Вашем коде есть несколько ошибок
Код:

var skinLocation:String = "file:///C:/Program Files/Macromedia/Flash 8/en/Configuration/Skins/ClearOverPlaySeekMute.swf";
var my_array:Array = (_level0.moviesArray).split(",");

for (var i = 0; i < array.length; i++) {
        _root.attachMovie("FLVPlayback", "my_player"+i, 10, {width:320, height:240, x:i*320, y:0, skinAutoHide:true, skin:skinLocation, contentPath:(1+1)+".flv"});
}

т.е непонятно какого массива берется длина, имена свойств в должны быть с подчеркиванием как и в написании их при обычных условиях, для всех образцов
задается одно и то же видео 2.flv

а в цикле потом можно обратится к каждому элементу
как _root["my_player"+i]

vigor 05.09.2008 19:06

Большое спасибо за ответ, особенно за "_root["my_player"+i]"!!!. По поводу ошибок, это я просто по быстрому набрал, поэтому допустил некоторые неточности, в приложении код правильный.
Код:

var skinLocation:String = "file:///C:/Program Files/Macromedia/Flash 8/en/Configuration/Skins/ClearOverPlaySeekMute.swf";
var my_array:Array = (_level0.moviesArray).split(",");

for (var i = 0; i < my_array.length; i++) {
        this.attachMovie("FLVPlayBack", "player_"+i, 10, {width:320, height:240, x:i*320, y:0, contentPath:my_array[i], skin:skinLocation, skinAutoHide:true, autoPlay:false});
}

Основная проблема в том, что он не создает для каждого мувика свой проигрыватель. Я пошагово пробежал, он на каждом шаге цикла создает проигрыватель, а на последующем предыдущий проигрыватель удаляется, а новый создается. Может тут дело в attachMovie?

Wolsh 05.09.2008 19:33

Конечно, vigor, Вы же аттачите все плейбеки на одну глубину 10. Поэтому каждый новый выносит предыдущий)
И исправьте то на что указал Mur4ik - width и height пишутся в АС2 с подчеркиванием: _width, _height.
Стало быть, функция аттача будет выглядеть гдето так:
Код:

for (var i = 0; i < my_array.length; i++) {
        this.attachMovie("FLVPlayBack", "player_"+i, 10+i, {_width:320, _height:240, _x:i*320, _y:0, contentPath:my_array[i], skin:skinLocation, skinAutoHide:true, autoPlay:false});
}


Mur4ik 05.09.2008 19:34

проблема в том что Вы аттачите все FLVPlayBack на одну глубину "10"

измените Ваш код вот так:
Код:

var skinLocation:String = "file:///C:/Program Files/Macromedia/Flash 8/en/Configuration/Skins/ClearOverPlaySeekMute.swf";
var my_array:Array = (_level0.moviesArray).split(",");

for (var i = 0; i < my_array.length; i++) {
        this.attachMovie("FLVPlayBack", "player_"+i, this.getNextHighestDepth(), {_width:320, _height:240, _x:i*320, _y:0, contentPath:my_array[i], skin:skinLocation, skinAutoHide:true, autoPlay:false});
}

и всё заработает...

Mur4ik 05.09.2008 19:35

упс, опоздал ;)

vigor 05.09.2008 19:48

Вот чиорт... у меня просто нет слов... ВСЕМ большое спасибо!

По поводу width, height, x, y, то если я не ошибаюсь в спецификации эти свойства для этого компонента пишутся без нижних подчеркиваний. хотя работают оба варианта.

Но это все мелочи, по сравнению с тем как я лопухнулся с глубиной...8(( Еще раз всем огромное спасибо!


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

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