Вход

Просмотр полной версии : loadMovie: как отследить _currentframe загруженного swf-ролика?


Orbital
17.09.2008, 18:43
var movies=new Array(
"intro1",
"intro2"
);

_root.createEmptyMovieClip("emc", _root.getNextHighestDepth());
for(var i=0; i<movies.length; i++)
{
_root.emc.loadMovie(movies[i]+".swf");
for(var j=0; j<_root.emc._totalframes; j++)
{
trace("Current: "+_root.emc._currentframe);
}
}


Почему _root.emc._totalframes=1?

Ролики intro1.swf и intro2.swf присутствуют и загружаются.

MrPoma
17.09.2008, 18:54
Грузите MovieClipLader'ом и проверяйте по onLoadInit.

Orbital
17.09.2008, 19:20
Ок, переписал код с использованием MovieClipLoader:

stop();
var movies=new Array(
"intro1",
"intro2"
);

_root.createEmptyMovieClip("emc", _root.getNextHighestDepth());

var loader:MovieClipLoader=new MovieClipLoader();
loader.addListener(this);
function onLoadInit(_mc:MovieClip)
{
for(var i=0; i<_mc._totalframes; i++)
{
trace(_mc._currentframe);
}
}

for(var i=0; i<movies.length; i++)
{
loader.loadClip(movies[i]+".swf", _root.emc);
}

В результате получил 170 ноликов в output.

Как отслеживать _currentframe по мере проигрывания загруженного swf-ролика?
Как сделать так, чтобы каждый ролик проигрался до конца и после загружался следующий ролик из массива movies?

MrPoma
17.09.2008, 19:40
А вы хотели получить значения от 1 до 170? Ну тогда nextFrame(), а потом trace(_currentFrame)

Orbital
17.09.2008, 19:44
Отлично!
В output всё красиво, но ролик не проигрывается.

Наверное, я все-таки не оттуда копаю.
Ключевой вопрос: Как сделать так, чтобы каждый ролик проигрался до конца и после загружался следующий ролик из массива movies?


for(var i=0; i<_mc._totalframes; i++)
{
trace(_mc._currentframe);
}
Почему _root.emc._totalframes = 0?
Загружаемые ролики ведь не пустые.

etc
17.09.2008, 20:56
Так сначала надо дождаться загрузки, а потом уже трейсить.

Orbital
18.09.2008, 02:31
Снабдите реальным примером, пожалуйста.

MrPoma
18.09.2008, 03:37
function onLoadInit(mc:MovieClip){
trace(mc._totalframes);
}

Mur4ik
18.09.2008, 04:09
по первому посту:
Ваш цикл начинает выполняться когда еще swf не загрузился....
по третьему может как то так?
stop();
var movies:Array = new Array(
"intro1",
"intro2"
);

_root.createEmptyMovieClip("emc", _root.getNextHighestDepth());

var loader:MovieClipLoader=new MovieClipLoader();

loader.addListener(this);

function onLoadInit(_mc:MovieClip):Void {
{
_mc.onEnterFrame = function():Void {
trace(this._currentframe);
/* это на всякий случай можно и раскомментировать
if (this._currentframe == this._totalframes) {
delete this.onEnterFrame;
}
*/
}
}

for(var i=0; i<movies.length; i++)
{
loader.loadClip(movies[i]+".swf", _root.emc);
}