PDA

Просмотр полной версии : Загрузка и проигрывание нескольких мувиков одновременно


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(( Еще раз всем огромное спасибо!