Вход

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


Xmen
05.07.2010, 10:16
Последовательность проигрывания клипов.
у меня есть 2 клипа как можно сделать проигрывания последовательным, когда кончается один, начинал проигрывать второго.
this.loadMovie("1.swf");
this.loadMovie("2.swf");
так проигрывается только второй.

mooncar
05.07.2010, 10:46
loadMovie() здесь не годится
var loader:MovieClipLoader = new MovieClipLoader();
var mn:Number ;

this.onLoadInit = function(target:MovieClip)
{
if (target == cont1)
{
target._visible = true ;
target.play();
mn = setInterval(managePlay, 10);
}
if (target == cont2)
{
target._visible = false ;
target.stop();
}
};

loader.addListener(this);
loader.loadClip('1.swf', this.createEmptyMovieClip('cont1', this.getNextHighestDepth()));
loader.loadClip('2.swf', this.createEmptyMovieClip('cont2', this.getNextHighestDepth()));

function managePlay()
{
if (cont1._currentframe == cont1._totalframes)
{
cont1.stop();
cont1._visible = false ;
cont2._visible = true ;
cont2.play();
}
if (cont2._currentframe == cont2._totalframes)
{
cont2.stop();
cont2._visible = false ;
clearInterval(mn);
}
}
Такой вариант годится, если вес роликов примерно близкого порядка.
То есть предполагаем, что к концу воспроизведения первого второй уже загружен.
Иначе желательно дожидаться полной гарантированной загрузки обеих, то есть небольшой дополнительный загрузчик организовать в несколько строк кода.

Xmen
05.07.2010, 12:00
Спасибо код работает.
А как сделать чтобы повторялись клипы. У меня 1 раз проигрывает и все.

mooncar
05.07.2010, 12:08
У меня 1 раз проигрывает и все.
Такой алгоритм и предполагался.
Чтобы проигрывание было зацикленным, надо внести изменения в функцию управления воспроизведением:
function managePlay()
{
if (cont1._currentframe == cont1._totalframes)
{
cont1.stop();
cont1._visible = false ;
cont1.gotoAndStop(1);
cont2._visible = true ;
cont2.play();
}
if (cont2._currentframe == cont2._totalframes)
{
cont2.stop();
cont2._visible = false ;
cont2.gotoAndStop(1);
cont1._visible = true ;
cont1.play();
}
}

Xmen
05.07.2010, 14:23
все сделал так как написан на коде. Нормально получился. Swf нормально играет но когда поставил через DW в сайт то нече не работает то что я нарисовал появляется а код не работаеть то есть swf не играет.

mooncar
05.07.2010, 19:47
Вот так попробуй:
var loader:MovieClipLoader = new MovieClipLoader();
var mn:Number = setInterval(managePlay, 10);
var count:Number = 0;

this.onLoadInit = function(target:MovieClip)
{
target._visible = false ;
target.gotoAndStop(1);
count++;
};

var cont:MovieClip = this.createEmptyMovieClip('cont_all', this.getNextHighestDepth());
var c1:MovieClip = cont.createEmptyMovieClip('cont1', 0);
var c2:MovieClip = cont.createEmptyMovieClip('cont2', 1);

cont._visible = false ;
loader.addListener(this);
loader.loadClip('1.swf', c1);
loader.loadClip('2.swf', c2);

function managePlay()
{
if (count == 2)
{
cont._visible = true ;
c1._visible = true ;
c1.play();
delete count;
}
if (c1._currentframe == c1._totalframes)
{
c1.stop();
c1._visible = false ;
c1.gotoAndStop(1);
c2._visible = true ;
c2.play();
}
if (c2._currentframe == c2._totalframes)
{
c2.stop();
c2._visible = false ;
c2.gotoAndStop(1);
c1._visible = true ;
c1.play();
}
}

Немного сложновато, но я исхожу из того, что не знаю, как работают твои 1.swf и 2.swf , можешь ли ты их редактировать, прописаны ли там где-либо stop() , т.е. тут универсальная избыточная схема и она годится для любой скорости загрузки роликов.

Xmen
06.07.2010, 09:39
SWF у меня avi файлы перекодированные.
во Флеше играет а в IE только первоначальный изображения

Добавлено через 25 минут
Интересно то что я попробовал в пустом HTML использовать swf файл, вуоля все работает а в моём php страничке не получилось swf проиграть там код акшенскрипта не работает а появляется просто рисунок.