![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Aug 2013
Сообщений: 4
|
Здравствуйте, имею код
public class ListBox extends Sprite { ... public function ListBox(_width:int = 100,_height:int = 100) { super(); this.width = _width as int; width = _width; this.height = _height; ... } ........ при вызове конструктора, свойства width,height должны изменяться, но как вы поняли и заголовка, этого не происходит, почему? Заранее спасибо за помощь. |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
У пустоты нет ширины и высоты.
__________________
Reality.getBounds(this); |
|
|||||
|
Регистрация: Aug 2013
Сообщений: 4
|
При инициализации это уже не пустота?!
|
|
|||||
|
Цитата:
Да и добавлять андерскор _ к названиям параметров - это не по конвенции. По вопросу, что же происходит в сеттерах width и height спрайта при их вызове Создан новый спрайт. Значения его высоты и ширины при этом = 0. 0 * 100 = ? сколько будет? Сто, или всё же ноль? |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Цитата:
Это не то же самое, как создавать новый документ в фотошопе (или флэше, да), когда Вы указываете размеры рабочей области. У контейнера нет рабочей области; пока в нем нет содержимого, его ширина и высота ноль. Когда Вы создаете новый Shape, история та же — невозможно задать ширину и высоту пустоте. Вам надо хоть что-нибудь нарисовать в этом шейпе, и все появится. Как должно выглядеть на экране "ширина=300" у объекта, который абсолютно пуст? Ему нечего сужать или растягивать. У него нет ни одного пикселя, даже прозрачного. ОК, объясните, чего Вы на самом деле хотите. Чтобы видимая область контейнера, когда в него напихают объектов, была 100х100, а все за этими рамками обрезалось? Задайте scrollRect или примените маску.
__________________
Reality.getBounds(this); Последний раз редактировалось Wolsh; 28.08.2013 в 09:27. |
|
|||||
|
Регистрация: Aug 2013
Сообщений: 4
|
Цитата:
Добавлено через 14 минут Цитата:
Решил проблему вставив после super() следующий код |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Так вот в природе все ровно наоборот — в зависимости от ширины и высоты объектов контейнер возвращает свой width и height.
"Рассчитывать" размеры объектов, подгоняя их в нужный прямоугольник, Вы будете в этом же классе? Не сами же они (надеюсь) устанавливают собственные размеры, запрашивая данные у родителей, типа parent.width? А если так, то у вас есть переменные _width и _height, в которых есть эти размеры области, считайте на здоровье. И даже если рисовать прозрачную область в графиксе контейнера, то я бы не связывался с обводкой. Лучше нарисуйте прозрачную заливку beginFill/drawRect без обводки, чтобы не иметь проблем с точностью размеров, особенно при масштабировании.
__________________
Reality.getBounds(this); |
|
|||||
|
Регистрация: Aug 2013
Сообщений: 4
|
Именно так они и делают, размер меняется только у контейнера с содержимым ListBox и у линии по которой будет ходить ползунок, остальные элементы управления на основании _width и _height рассчитывают свои координаты по осям x,y.
Цитата:
|
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Цитата:
Дети — подчиненные родителя (контейнера или создающего их класса-менеджера, который может и не быть их физическим контейнером, пихая их еще куда-то, не суть). Подчиненные. Они не должны ничего решать сами, кроме собственного пищеварения. Они не могут решать, ГДЕ им быть и КОГО дергать. Это решает родитель. Иначе хаос, то есть полная противоположность программированию.
__________________
Reality.getBounds(this); |
![]() |
![]() |
Часовой пояс GMT +4, время: 10:11. |
|
|
« Предыдущая тема | Следующая тема » |
|
|