Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Как запретить изменение размеров объекта (http://www.flasher.ru/forum/showthread.php?t=171615)

imena 20.11.2011 06:30

Как запретить изменение размеров объекта
 
Всем доброго утра!

Есть объект Форма - производный от спрайта.

Передаю в него спрайт в качестве фона.
Передаю в него объект МОЯ_КНОПКА

Все отображается и реагирует отлично, но, когда я изменяю размеры моего объекта

Код AS3:

form.width = ...

у меня все что включает в себя этот объект тоже изменяет первоначальные размеры-сужается или растягивается.

Добавил функцию resizeForm

Код AS3:

 
public function resizeForm(w:uint, h:uint = 0):void {
 
        bckgnd.width = w;
 
        if (h) {
 
                bckgnd.height = h;
        }
 
        else {
 
                bckgnd.height = _h;
        }
}

с этой функцией изменение размеров моей формы проходит отлично.... кнопочка сохраняет первоначальные размеры. Но как только form.width = .. все летит к чертям.

Как запретить изменение размеров моего объекта form через width?

Всем заранее спасибо

dark256 20.11.2011 08:27

Все что в ваш объект вставлено, масштабирется и перемещается вместе с ним.
Соответсвенно, изменяя геометрию контейнера, изменяйте геометрию контента обратно пропорционально...

goodguy 20.11.2011 10:04

на самом деле меняется не ширина или высота, а scaling
поэтому лучше всего переопределить у главного контейнера сеттеры ширины и высоты и там пересчитывать всех детей
Код AS3:

override public function set width(value:Number):void {
      var children:int = numChildren;
      while (i--) {
            getChildAt(i).scaleX += (1 - scaleX);
      }
}

тоже самое для height

п.с. Писал прямо здесь, не проверял )

Wolsh 20.11.2011 14:05

Я бы в оверрайде просто перерисовывал/масштабировал фон под задаваемые размеры и, если надо, перемещал контент согласно политикам. Как вобщем и делают "резину".

imena 20.11.2011 21:02

Все получилось... по совету волша в оверайде меняю только бэкграунд ну и позиции объектов если надо... Даже сделал чтобы при превышении максимальных размеров формы значений по Х и У куда помещается объект объект не выходил за пределы формы
Но теперь вот какая проблема(или не проблема)... при рисайзе все размеры меняются... вроде понятно почему, но... попытался в основном классе программы обработать Event.RESIZE

Код AS3:

        stage.addEventListener(Event.RESIZE, resizeListener);
 
        private function resizeListener(e:Event):void {
 
        }

но программа не попадает в прослушиватель...

Добавлено через 3 минуты
ой...прошу прощения... написал тут и сразу нашел ответ... забыл про скэйл мод = но скэйл


Часовой пояс GMT +4, время: 14:10.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.