![]() |
Обновить расположение элементов в List
Всем привет.
Я завожу List, в каждом его элементе есть текст и картинка. Картинка -- отнаследованный от Image класс, который позволяет (в зависимости от того, какое сво-во инициализировано, setHeight или setWidth) задавать ее размеры, не меняя масштабов. Изменение масштаба производится по событии initialize (или creationComplete, что, как выяснилось, сути проблемы не изменяет). Все получается, но элементы списка остаются размеров таких, как будто ничегог не масштабировалось. Т.е., по всей видимости, список загружается, грузится содержимое с картинками, элементы его размещаются и только после этого изменяется масштаб картинок. Перераспределение элементов списка уже не происходит. Вопросы: 1. как заставить список обновить отображение 2. как правильно поставленную задачу реализовать без извратов(может я в корне неверно делаю) 3. нужно ли в таких вещах использовать геттеры/сеттеры или остановиться на добавлении новый свойств в классе. Спасибо. |
1. creationComplete выполняется только при загрузке данного окна/формы. Если делать переходы, то повторно это событие выполняться не будет. Возмножно, в твоем приложении так и должно быть, или планируется каждый раз создавать форму.
2. Из описания непонятно каким образом происходит отображение картинки. Если простой загрузкой - source указывает на адрес картинки, то такое поведение естественно: установка размеров произойдет после загрузки картинки - явно после отображения списка. 3. Непонятна поставленная задача - "расположение элементов", "перераспределение". О чем речь? - О сортировке элементов в списке? - Это отдельный механизм, хорошо реализованный во флексе. Плиз, более конкретно изложи задачу. Желательно с кодом, чтобы вносить изменения, а не мудрить сначала. |
Согласен, вопрос поставлен неточно=)
Итак. Я думаю, основной файл не имеет смысла приводить. Обычный лист. Вот Mit -- itemRenderer Код:
<?xml version="1.0" encoding="utf-8"?>Код:
<?xml version="1.0" encoding="utf-8"?>Суть проблемы тоже ясна (надеюсь=). Изменение размеров картинки идет после того, как itemRenderer отобразил все на экране (так или нет?) и, естественно, лист не знает, что что-то изменилось внутри. Вопрос следующий. Как заставить список (или itemRenderer'ы, я не знаю, кто это действие инициирует) перерисовать(перерасположить?) свои элементы? Т.е. есть ли специальная ф-ия, которая насильно это делает. Или же есть способ это все обойти без изврата? (Если есть, то предыдущий вопрос все равно актуален). И наконец, можно ли узнать размер загружаемой картинки до ее отображения. P.S. В принципе есть еще идея реализовывать все в конструкторе, но, наверно, во флексе лучше ничего не делать в конструкторах, так как я не знаю внутренней архитектуры-- могу что-то напортить. Thx=) |
Что это в первом листинге: <s:ItemRenderer и т.д.?
Если ты в листе прописываешь атрибут itemRenderer и указываешт ему свой класс, то почему класс является потомком ItemRenderer? - Вроде должен быть контейнером. Или я чего-то не понимаю? Второе: если честно, то я не знаю как поведет себя initialize в классе MImage. Принято делать сеттеры в классе. А для быстрого обновления в сеттере устанавливаешь не только приватное свойство ширины, но и вычисляешь приватное свойство высоты. В этом случае ширина и высота просчитается гарантийно сразу. И третье: с листингов так и непонятно значение source имиджа. Интереснее всего листинг образования твоего листа, а не начинки. |
Дубль три =) (Спасибо за терпение)
Основной файл: Код:
<?xml version="1.0" encoding="utf-8"?> |
Сразу приношу извинения - использую Хало, а у Спарка есть отличия, на что я и накололся сразу.
Вот вариант реализации (непроверенный, написанный тут). Суть реализации в том, что изменение геометрических размеров картинки будет произведено после ее загрузки (по умолчанию остается в высоту строки листа). Код AS3:
|
| Часовой пояс GMT +4, время: 12:38. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.