![]() |
|
||||||||||
|
|||||
|
Регистрация: Jun 2007
Сообщений: 118
|
Воспользовавшись поиском, вычитал как узнать размер загруженной картинки. Но проблема в том, что не могу его (размер) сохранить.
for (var i; i<total; i++) {
var loader:MovieClipLoader = new MovieClipLoader();
var listener:Object = new Object();
var image = my_xml.firstChild.childNodes[i].attributes.small;
var clip:MovieClip = _root.createEmptyMovieClip("img"+i, 1000+i);
listener.onLoadComplete = function() {
trace(clip._width);
}
loader.addListener(listener);
loader.loadClip(image, clip);
}
Вообще в итоге мне надо расположить картинки в линию, но ширина у них может быть разная. А если я пытаюсь писать clip._x = clip._width + i * clip._width; внутри функции, то ничего не получается, т.к. i получается равна total... Прошу, помогите решить проблему. |
|
|||||
|
Может так...
var loader:MovieClipLoader = new MovieClipLoader();
var listener:Object = new Object();
listener.onLoadComplete = function(target:MovieClip) {
trace(target._width);
target._x = target["count"]* target._width;
}
loader.addListener(listener);
for (var i; i<total; i++) {
var image = my_xml.firstChild.childNodes[i].attributes.small;
var clip:MovieClip = _root.createEmptyMovieClip("img"+i, 1000+i);
//как вариант
clip["count"] = i;
loader.loadClip(image, clip);
}
|
|
|||||
|
Регистрация: Jun 2007
Сообщений: 118
|
Сделал как вы посоветовали... trace(target["count"]); выдает undefined
Последний раз редактировалось GreatRash; 01.08.2008 в 16:34. |
|
|||||
|
обработчик не тот был - нужен onLoadInit, а не onLoadComplete.
+ for (var i:Number = 1; i<5; i++) начальную переменную задать |
|
|||||
|
Регистрация: Jun 2007
Сообщений: 118
|
Это я когда сюда писал код накосячил... на самом деле там с кодом все в порядке.
Вот полный код: var loader:MovieClipLoader = new MovieClipLoader();
var listener:Object = new Object();
listener.onLoadInit = function(target:MovieClip) {
trace(target.["count"]);
target._x = target["count"]* target._width;
};
loader.addListener(listener);
var my_xml:XML = new XML();
my_xml.ignoreWhite = true;
my_xml.onLoad = function(success:Boolean) {
if (success) {
var total = my_xml.firstChild.childNodes.length;
for (var i = 0; i<total; i++) {
var image = my_xml.firstChild.childNodes[i].attributes.small;
var clip:MovieClip = _root.createEmptyMovieClip("img"+i, 1000+i);
clip["count"] = i;
loader.loadClip(image,clip);
}
}
};
my_xml.load("gallery.xml");
|
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Цитата:
var loader:MovieClipLoader = new MovieClipLoader();
var listener:Object = new Object();
listener.onLoadInit = function(target:MovieClip) {
trace(target._parent.count);
target._x = target._parent.count* target._width;
};
loader.addListener(listener);
var my_xml:XML = new XML();
my_xml.ignoreWhite = true;
my_xml.onLoad = function(success:Boolean) {
if (success) {
var total = my_xml.firstChild.childNodes.length;
for (var i = 0; i<total; i++) {
var image = my_xml.firstChild.childNodes[i].attributes.small;
var clip:MovieClip = _root.createEmptyMovieClip("img"+i, 1000+i);
var pic:MovieClip = clip.createEmptyMovieClip("img", 0);
clip["count"] = i;
loader.loadClip(image,pic);
}
}
};
my_xml.load("gallery.xml");
__________________
Reality.getBounds(this); Последний раз редактировалось Wolsh; 01.08.2008 в 18:56. |
|
|||||
|
Регистрация: Jun 2007
Сообщений: 118
|
Спасибо, попробую.
Моментально назрел вопрос: а зачем создавать еще один контейнер (который pic)? |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
1) Важный момент - контейнер это то, во что можно чтото положить, какойто объект. В этом смысле pic для картинки - не контейнер, это сама картинка и есть. Это в среде Флэш, когда Вы руками помещаете картинку внутрь какого-то клипа, она воспринимается как некий объект, лежащий в клипе, и Вы можете ее двигать, искажать и т.д.
Но - только руками. Скриптом обратиться к "просто картинке" не удастся. Если Вы создаете скажем в руте двадцать пустых клипов и загружаете их картинками, Вы имеете 20 картинок в руте, а не двадцать клипов с картинками(!), которыми Вы можете управлять внутри этих клипов. Например, чтобы наложить на каждую картинку маску, Вам придется создать двадцать масок В РУТЕ и расположить каждую из них точно над картинкой, и в дальнейшем следить за их совпадением и т.д. Не логичнее ли иметь клип-контейнер, в котором уже внутри клип-картинка? 2) В цикле Вы начинаете загрузку, и в этом же цикле присваиваете клипам, в которые будут грузиться картинки, некие свойства, например count или id, может быть какой-то текст подсказки, название и ссылка на большое изображение - всё что Вам надо сассоциировать с этой картинкой-превьюшкой. Но дело в том, что после того, как файл загрузится в клип, все эти рукотворные свойства исчезнут, так как это уже ДРУГОЙ клип. На примере картинок не очень понятно, почему так, но если вспомнить, что вообщето этот лоадер и называется MovieClipLoader, и что он предназначен для загрузки как клипов, так и картинок... Ну вот и загрузили в клип mc файл свф - этот свф теперь и есть mc. И все свойства прежнего mc (кроме стандартных свойств мувиклипа, например _x и _y) на него уже не распространяются - и это правильно и здорово. Даже если кажется что ужас и головняки)))) Итак, чтобы сохранить все нужные нам данные привязанными к этой картинке, мы просто делаем оболочку-контейнер и сохраняем данные в нем. Потом Вы поймете, что в таком способе загрузки есть еще разные резоны - например, если загруженная картинка будет отрисовываться в битмапдату и удаляться - очень удобно, когда все это происходит в ее собственной отдельной "комнате". Также в случае, когда Вы хотите наложить маску и сделать какие-то эффекты - у Вас есть готовый клип-модуль, в котором внутри - картинка в виде клипа, к которой Вы можете обращаться ВНУТРИ этого модуля, а не через рут, вычисляя каждый раз координаты и т.п.
__________________
Reality.getBounds(this); Последний раз редактировалось Wolsh; 02.08.2008 в 12:35. |
![]() |
![]() |
Часовой пояс GMT +4, время: 12:52. |
|
|
« Предыдущая тема | Следующая тема » |
|
|