Форум 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)
-   -   Принудительный старт/стоп при MovieClipLoader() (http://www.flasher.ru/forum/showthread.php?t=141428)

Бармалейкин 24.06.2010 18:59

Принудительный старт/стоп при MovieClipLoader()
 
Подгружаю внешний .swf через MovieClipLoader(), всё грузится отлично, прогресс бар бежит исправно но вот чего не хватает: хочется чтобы загружаемая флешка до того как полностью загрузится не запускалась.
Вставлял уже даже в .onLoadProgress команду mc.stop(); (mc - объект созданный через createEmptyMovieClip(), куда грузится флешка) не помогает. Флешка грузится и сразу-же исполняется. Ни mc._visibility= false ни mc.stop() не делают с ней ничего. Только удаётся задать позицию загрузки флешки через mx._x и mc._y Загружаемые таким образом клипы не управляются из загружающего клипа совсем? Или есть способ? Подскажите пожалуйста!

mooncar 24.06.2010 19:50

Флешка не запустится до полной загрузки при использовании MCL.
Как только она загрузится, с нею будет происходить все то, что предусмотрено ее сценарием.
Если в ее первом кадре стоит stop(), то она так и останется на первом кадре.
Если в ней не стоит stop() на первом кадре, то она начнет проигрываться сразу после загрузки.

Если вам нужно, чтобы она была принудительно остановлена после загрузки, даже если в ней не прописан stop() в первом кадре, сделайте это явно в коде ее загрузки:
Код AS1/AS2:

var mcl:MovieClipLoader = new MovieClipLoader();
 
mcl.addListener(this);
 
this.onLoadInit = function(target_mc:MovieClip)
{
    target_mc.stop(); //остановили в первом кадре
} ;
 
this.createEmptyMovieClip('cont', 0);
mcl.loadClip('anim.swf', cont);


Бармалейкин 24.06.2010 23:00

Мой код немного другой:
Код AS1/AS2:

var mc:MovieClip = this.createEmptyMovieClip("mc1", this.getNextHighestDepth());
mc._x = 0; mc._y = 0;
 
var mcLoader:MovieClipLoader = new MovieClipLoader();
var mcListener:Object = new Object();
mcListener.onLoadInit = function(target:MovieClip) {
        target.stop();
}
mcListener.onLoadProgress = function(target:MovieClip, bytesLoaded:Number, bytesTotal:Number):Void {
// тут вызывается функция меняющая прогресс-бар
        set_progress_pos( bytesLoaded / bytesTotal * 100 );
}
mcLoader.addListener(mcListener);
mcLoader.loadClip("flash.swf", mc);

Но не получилось...
Да, флешку я гружу не свою (пока что) поэтому в её код вставить в первый кадр stop() не смогу :)

Ещё вопрос: а что происходит с загружаемым таким образом флеш-роликом, у которого анимация не кадровая а скриптовая? Ведь скрипт по stop() не остановить. Получается он будет выполняться в любом случае? Можно-ли его тогда хотя-бы
Код AS1/AS2:

mc._visible= false;

скрыть? А то такой фокус тоже не прокатывает, хоть и странно.
----------

Всё, разобрался. Вот в итоге такой код работает как мне надо:
Код AS1/AS2:

this.createEmptyMovieClip("mc1", this.getNextHighestDepth());
 
var mcLoader:MovieClipLoader = new MovieClipLoader();
var mcListener:Object = new Object();
mcListener.onLoadStart = function(target:MovieClip) {
        target._x = 0; target._y = 0;
        target._visible= false;
}
mcListener.onLoadProgress = function(target:MovieClip, bytesLoaded:Number, bytesTotal:Number):Void {
        set_progress_pos( bytesLoaded / bytesTotal * 100 );
}
mcListener.onLoadComplete = function(target:MovieClip) {
        wLoading1.removeMovieClip();
        target._visible= true;
}
mcLoader.addListener(mcListener);
mcLoader.loadClip(sMainFile, mc1);

Снова спасибо mooncar за подсказку!

mooncar 24.06.2010 23:09

Вроде все верно. Раз чужая флешка - к автору обращайтесь, как ее остановить.
Раз программная анимация в ней - никаким stop() ее не остановить, надо знать как и что там организовано и постараться предотвратить это после загрузки (действуя изнутри onLoadInit)

Всегда что-либо делайте с загруженным только изнутри onLoadInit. Попробуйте скрыть ее, как хотели:
Код AS1/AS2:

mcListener.onLoadInit = function(target:MovieClip) {
        target._visible= false ;
}

Разумеется, если где-либо внутри загруженный флешки есть обратное действие (...._visible= true) для каких-то ее элементов, то тогда уж никак.

И еще, вот это избыточно:
Код AS1/AS2:

mc._x = 0; mc._y = 0;

Пустой мувик создается и без этого в нулевых координатах.

PS. Используйте свои ролики для работы или связывайтесь с автором...


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

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