![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Dec 2012
Сообщений: 6
|
добавил swc в проект, содержащую компоненты флеша(кнопки, списки и т.д).
в коде добавляю кнопку var btn:Button = new Button(); btn.label = "123123"; this.actionPanel.addChild(btn); делаю trace размера actionPanel.height до вызова addChild - высота 52. а сразу после - 101. При этом высота кнопки 22(тоже трейсом выводил). Пробовал задать btn.height = 10(к примеру) - но ничего не меняется. При этом если вместо Button() - использовать обычный textField то происходит то же самое. Но если созданному textField задать выосту *.height - то тогда высота контейнера высталвяется правильная после вызова addchild. В чем тут дело? компонент кнопки особенный какой-то? ему надо больше месте? ![]() |
|
|||||
|
Ничего особенного. Просто размер текстфилда по умолчанию 100х100, а в кнопке он есть. Поэтому геттер высоты кнопки возвращает высоту ее графики, а контейнер учитывает и высоту текстфилда
__________________
Ко мне можно и нужно обращаться на ты) |
|
|||||
|
Регистрация: Dec 2012
Сообщений: 6
|
Не совсем понял.
допустим gettern высоты textfield считает ее реальную высоту целиком. а settern соответственно устаналивает реальную высоту. получается для button геттерны и сеттерны работают только с графикой, а реальный размер не отображают и не ставят соответственно? если так то как мне изменить размер кнопки реальный, а не только ее графики? ведь когда я создаю кнопку new Button() я не создаю отдельно контейнер в котором она нарисована? как к нему обратиться для изменения его размеров? |
|
|||||
|
Регистрация: Feb 2012
Сообщений: 1,540
|
Чтобы узнать реальный размер, нужно использовать getBounds.
|
|
|||||
|
Не стоит надеяться на правильную работу измерителя высоты во флеше. Если нужны точные показатели, создайте свой контейнер и переопределите геттеры высоты и ширины.
Пример: package { import flash.display.Sprite; public class TestClass extends Sprite { private var _sprite: Sprite = new Sprite(); public function TestClass() { _sprite.graphics.beginFill(0x80FF00); _sprite.graphics.drawRect(0, 0, 200, 200); _sprite.graphics.endFill(); _sprite.x = _sprite.y = 100; addChild(_sprite); } override public function get width():Number { return 100; } override public function get height():Number { return 60; } } }
__________________
Ко мне можно и нужно обращаться на ты) |
|
|||||
|
Регистрация: Dec 2012
Сообщений: 6
|
Цитата:
у меня же sprite - actionPanel будет содержать разные компоненты и его размеры будут меняться. как мне получать актуальную информацию и не задавать ее статично? Добавлено через 1 минуту getBounds возвращает мне rectangle где высота точно также выдает 101, как и *.height Добавлено через 4 минуты хм. вообще никогда? зачем они тогда реализовали эти гетерны и сетерны?и потом , получается единственным "точным" способом посчитать реальную (отображаемую) высоту спрайта-контейнера - это пройтись по его детям, найти того у которого "y" самая большая и добавить к нему высоту этого же ребенка? а если там глубина вложенности детей 10, 100, 1000? обходить всех на всех уровнях? |
|
|||||
|
Цитата:
У вас какая-то проблема притянутая за уши, если честно. Все равно у вас же есть какие-то определенные размеры, в которые должна умещаться ваша панель действий. Поэтому либо ориентируйтесь на эти размеры, либо не используйте флешевские корявые компоненты, а берите либо сторонние, либо делайте собственные, которые будут все правильно возвращать. Цитата:
__________________
Ко мне можно и нужно обращаться на ты) |
|
|||||
|
Регистрация: Dec 2012
Сообщений: 6
|
Нашел решение - которое предполагал
![]() http://stackoverflow.com/questions/1...iner-correctly Добавлено через 2 минуты Цитата:
а тут думаю, дай сэкономлю время используя дефолт. И потерял целый день с этими параметрами высоты ![]() |
|
|||||
|
Стандартные компоненты подходят лишь когда надо по-быстренькому что-то набросать, не обращая внимания на дизайн. Лишь бы работало. Но когда надо делать серьезные проект, эти компоненты никак не подойдут
п.с. Речь не о флексовых компонентах (а то наверняка сейчас найдутся те, кто начнет спорить и приводить их в пример )
__________________
Ко мне можно и нужно обращаться на ты) |
|
|||||
|
Цитата:
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку. |
![]() |
![]() |
Часовой пояс GMT +4, время: 13:11. |
|
|
« Предыдущая тема | Следующая тема » |
|
|