|
|
|||||
Регистрация: 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, время: 02:58. |
|
« Предыдущая тема | Следующая тема » |
|
|