![]() |
Контроль превышения child размеров parent
Доброго времени суток,
В приложении реализован следующий алгоритм: 1. Создается sprite1 фиксированного размера. 2. sprite1 помещается на box (из библиотеки визуальных компонентов ВК, но это к делу не относится, принимаем его за sprite0). 3. На sprite1 создается фиксированного размера sprite2. 4. На sprite2 в зависимости от кол-ва данных создаются textfield. По окончанию п.4 высота sprite2 становится больше высоты sprite1, поэтому высота sprite1 увеличивается. Box (sprite0) при привышении допустимых размеров данных добавляет scroll. Проблема заключается в том, что я использую sprite2.scrollRect, чтобы делать прокрутку непосредственно спрайта с данными, а родительские элементы реагируют на превышение высоты, что в итоге приводит к появлению лишнего scroll. Каким образом мне следует организовать прокрутку sprite2 так, чтобы родительские элементы не реагировали на превышение высоты? |
Эм, а вычитать из скролла лишние размеры? Если размеры изначально фиксированные, то не будет проблем найти разность между новым размером и старым.
|
КорДум,
Скролл реагирует на изменение высоты sprite1, который в свою очередь реагирует на изменение высоты sprite2..n. Так как на для остальных спрайтов (3..n) необходимо, чтобы скролл работал корректно, то требуется, чтобы sprite1 игнорировал именно высоту sprite2. Поэтому, к сожалению, вариант отключения скролла или корректировки его работы будет неуместным. |
то есть sprite1 должен иметь фиксированную высоту?
подпишите sprite1 на событие изменения высоты sprite2 и каждый раз в таком случае устанавливайте sprite1 фиксированную высоту |
derhab,
Насколько я понимаю, в таком случае уменьшатся и размеры sprite2, а значит изменится значение масштаба и данные на sprite2 будут неправильно отображены, я прав? Да, моя задача состоит в том, чтобы sprite1 не реагировал на превышение высоты sprite2, но реагировал на превышение высоты других child. |
напишите свой класс для sprite1, расширяющий Sprite и переопределите свойство height, задайте нужное вам поведение..
|
derhab,
Спасибо за отличную идею! К сожалению, у меня нет опыта для реализации данной идеи, поэтому я был бы очень признателен, если бы вы скинули ссылку с примером реализации класса, расширяющего стандартный класс. |
Изучите правила реализованные в других GUI-фреймворках, например, во Flex.
|
Написал класс, который при запросе размеров спрайта будет выдавать фиксированные значения. Присвоил данный класс объекту sprite2, тем не менее, sprite1 по какой-то причине изменяет свою высоту до реальной высоты sprite2.
Код AS3:
Добавлено через 2 часа 53 минуты У моей задачи есть 2 пути решения: I. 1) Уточнить как Sprite определяют размеры child. 2) Подделать значения размеров при помощи расширения класса Sprite. 3) Присвоить новый класс sprite2. Таким образом фактический размер sprite2 будет соответствовать данным на нем, а parent будет считать, что sprite2 меньше. II. Так как box (sprite0) реагирует на свойство height sprite1, то: 1) Уточнить как происходит изменение размеров Sprite из-за child. 2) При изменении размеров проверить, чтобы они не были вызваны sprite2. 3) Подделать значения размеров. 4) Присвоить новый класс sprite1. Таким образом фактический размер sprite1 будет соответствовать данным на нем, но: * В случае изменения размеров, вызванных sprite2 - parent (box (sprite0)) будет получать подделанное значение и не будет добавлять скролл. Данные, выходящие за ограничения размеров будут спрятаны при помощи mask или scrollRect непосредственно в sprite2. * В случае изменения размеров, вызванных не sprite2, а другими child - box получит реальные размеры и будет добавлять скролл. Второй способ уже реализован, так как уже известно, как box (sprite0) определяет размеры child, и подделать эти значения можно. Код AS3:
Мне более импонирует первое решение - оно более логично, но, увы, пока не могу найти ответ на свой вопрос - как стандартный класс Sprite определяет размеры своих child? |
| Часовой пояс GMT +4, время: 08:53. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.