Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 20.11.2011, 06:30
imena вне форума Посмотреть профиль Отправить личное сообщение для imena Найти все сообщения от imena
  № 1  
Ответить с цитированием
imena
[+1.3 07.12.11]

Регистрация: Feb 2011
Сообщений: 121
По умолчанию Как запретить изменение размеров объекта

Всем доброго утра!

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

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

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

Код 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?

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

Старый 20.11.2011, 08:27
dark256 вне форума Посмотреть профиль Отправить личное сообщение для dark256 Посетить домашнюю страницу dark256 Найти все сообщения от dark256
  № 2  
Ответить с цитированием
dark256
 
Аватар для dark256

блогер
Регистрация: Apr 2008
Адрес: SPb
Сообщений: 3,718
Записей в блоге: 5
Отправить сообщение для dark256 с помощью ICQ Отправить сообщение для dark256 с помощью Skype™
Все что в ваш объект вставлено, масштабирется и перемещается вместе с ним.
Соответсвенно, изменяя геометрию контейнера, изменяйте геометрию контента обратно пропорционально...
__________________
FLASHER.MAP SOUNDSTAGE / CS3 / AS2

Старый 20.11.2011, 10:04
goodguy вне форума Посмотреть профиль Найти все сообщения от goodguy
  № 3  
Ответить с цитированием
goodguy
Banned
[+1 05.11.11]
[+1 09.08.11]

Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
на самом деле меняется не ширина или высота, а scaling
поэтому лучше всего переопределить у главного контейнера сеттеры ширины и высоты и там пересчитывать всех детей
Код AS3:
override public function set width(value:Number):void {
      var children:int = numChildren;
      while (i--) {
            getChildAt(i).scaleX += (1 - scaleX);
      }
}
тоже самое для height

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

Старый 20.11.2011, 14:05
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 4  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Я бы в оверрайде просто перерисовывал/масштабировал фон под задаваемые размеры и, если надо, перемещал контент согласно политикам. Как вобщем и делают "резину".
__________________
Reality.getBounds(this);

Старый 20.11.2011, 21:02
imena вне форума Посмотреть профиль Отправить личное сообщение для imena Найти все сообщения от imena
  № 5  
Ответить с цитированием
imena
[+1.3 07.12.11]

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

Код AS3:
	stage.addEventListener(Event.RESIZE, resizeListener);
 
	private function resizeListener(e:Event):void {
 
	}
но программа не попадает в прослушиватель...

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

Создать новую тему Ответ Часовой пояс GMT +4, время: 13:02.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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