|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
[+1.3 07.12.11]
Регистрация: Feb 2011
Сообщений: 121
|
Как запретить изменение размеров объекта
Всем доброго утра!
Есть объект Форма - производный от спрайта. Передаю в него спрайт в качестве фона. Передаю в него объект МОЯ_КНОПКА Все отображается и реагирует отлично, но, когда я изменяю размеры моего объекта у меня все что включает в себя этот объект тоже изменяет первоначальные размеры-сужается или растягивается. Добавил функцию resizeForm public function resizeForm(w:uint, h:uint = 0):void { bckgnd.width = w; if (h) { bckgnd.height = h; } else { bckgnd.height = _h; } } Как запретить изменение размеров моего объекта form через width? Всем заранее спасибо |
|
|||||
Все что в ваш объект вставлено, масштабирется и перемещается вместе с ним.
Соответсвенно, изменяя геометрию контейнера, изменяйте геометрию контента обратно пропорционально... |
|
|||||
Banned
[+1 05.11.11]
[+1 09.08.11] Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
|
на самом деле меняется не ширина или высота, а scaling
поэтому лучше всего переопределить у главного контейнера сеттеры ширины и высоты и там пересчитывать всех детей override public function set width(value:Number):void { var children:int = numChildren; while (i--) { getChildAt(i).scaleX += (1 - scaleX); } } п.с. Писал прямо здесь, не проверял ) |
|
|||||
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Я бы в оверрайде просто перерисовывал/масштабировал фон под задаваемые размеры и, если надо, перемещал контент согласно политикам. Как вобщем и делают "резину".
__________________
Reality.getBounds(this); |
|
|||||
[+1.3 07.12.11]
Регистрация: Feb 2011
Сообщений: 121
|
Все получилось... по совету волша в оверайде меняю только бэкграунд ну и позиции объектов если надо... Даже сделал чтобы при превышении максимальных размеров формы значений по Х и У куда помещается объект объект не выходил за пределы формы
Но теперь вот какая проблема(или не проблема)... при рисайзе все размеры меняются... вроде понятно почему, но... попытался в основном классе программы обработать Event.RESIZE stage.addEventListener(Event.RESIZE, resizeListener); private function resizeListener(e:Event):void { } Добавлено через 3 минуты ой...прошу прощения... написал тут и сразу нашел ответ... забыл про скэйл мод = но скэйл |
Часовой пояс GMT +4, время: 10:04. |
|
« Предыдущая тема | Следующая тема » |
Опции темы | |
Опции просмотра | |
|
|