Просмотр полной версии : Загрузить из одной swf другие с передачей параметров.
Gal4enochek
19.05.2008, 12:09
Доброго времени суток!
У меня такая проблема:
Есть одна свф-ка - part.swf, которая в зависимости от параметров, переданных ей через flashvars, формируется различным способом (загружает в себя различные картинки).
И есть другая свф-ка all.swf, которая должна загрузить в себя два экземпляра первой, но с различными параметрами (сама эта свф-ка тоже получает параметыр из flashvars).
Как передать параметры этим двум part.swf???
Спасибо большое!
alexcon314
19.05.2008, 14:00
swf-загрузчик (all.swf):
var clip:MovieClip = _root.createEmptyMovieClip("clip", 0);
var mcLoader:MovieClipLoader = new MovieClipLoader();
mcLoader.addListener(this);
mcLoader.loadClip("part.swf", clip);
onLoadComplete = function(mc){
mc.param="parameter_takoi_to";
}
swf, который подгружается (part.swf):
trace(param);
Gal4enochek
19.05.2008, 17:47
Спасибо!
Это все работает, если загружается один экземпляр part.swf.
Если я хочу одновременно загрузить 2 экземпляра с разынми параметрами в 2 разных контейнера (clip1 и clip2), то параметры второго преписывают параметры первого.
var clip1:MovieClip = _root.createEmptyMovieClip("clip1", 0);
var clip2:MovieClip = _root.createEmptyMovieClip("clip2", 1);
clip2._y = 125;
var list1 : Object = new Object();
list1.onLoadComplete = function(mc){
mc.parametr="value1";
}
var list2 : Object = new Object();
list2.onLoadComplete = function(mc){
mc.parametr="value2";
}
var mcLoader1:MovieClipLoader = new MovieClipLoader();
mcLoader1.addListener(list1);
mcLoader1.loadClip("part.swf", clip1);
var mcLoader2:MovieClipLoader = new MovieClipLoader();
mcLoader2.addListener(list2);
mcLoader2.loadClip("part.swf", clip2);
Вышла из положения тем, что загружаю второй экземпляр (и присваиваю ему параметры) только после полной загрузки первого. Код получился более громоздким.
Gal4enochek
27.05.2008, 14:56
Еще один вопрос к той же проблеме.
Одна свф-ка (all.swf) загружает другую (part.swf). В свою очередь part.swf считывает текстовый файл и согласно ему формируется.
Я хочу получить размеры part.swf.
Но событие onLoadInit() все равно возвращет нули :(
В чем тут может быть загвоздка?
Psycho Tiger
27.05.2008, 15:44
Вышла из положения тем, что загружаю второй экземпляр (и присваиваю ему параметры) только после полной загрузки первого. Код получился более громоздким.
Лучше 2000 строк кода, который работает быстро и правильно, чем 50, но криво и медленно.
Насколько я помню, onLoadInit вызывается когда начинается загрузка. А на момент начатия загрузки мы ещё не знаем, какой это клип (в т.ч. его размеры).
Так что используем onLoadComplete||onData
Порядок такой:
onLoadStart - началась загрузка
onLoadComplete - загрузка завершилась
onLoadInit - загруженный клип проинициализировался (с этого момента доступны его ширина, высота и его переменные и свойства)
Alex_beginner
27.05.2008, 17:35
Позвольте поправить! Доступ к свойствам клипа уже есть c onLoadComplete:
var loadListener:Object = new Object();
loadListener.onLoadComplete = function(target_mc:MovieClip, httpStatus:Number):Void {
target_mc._xscale = 10;
target_mc._yscale = 10;
}
var mcLoader:MovieClipLoader = new MovieClipLoader();
mcLoader.addListener(loadListener);
var mc:MovieClip = this.createEmptyMovieClip("mc", 2);
mc._lockroot = true;
mcLoader.loadClip("scen.swf", mc);
Не позволю :)
_xscale и _yscale доступны еще до начала загрузки. Пример неудачный. Поставьте _width и _height и посмотрите на результат.
Alex_beginner
27.05.2008, 18:09
Да! Вы правы. Но все же строка
onLoadInit - загруженный клип проинициализировался (с этого момента доступны его ширина, высота и его переменные и свойства)
несовсем точна. Ведь некоторые переменные и свойства уже доступны ранее.:)
Да нет, все верно я описал, ведь писал про загружаемый клип, но грузится, то он не в пустоту, а в мувкилип, который существует и тоже имеет методы и свойства. Только вот часть из них замещается загруженным клипом, а часть наследуется.
Alex_beginner
27.05.2008, 18:30
Согласен.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.