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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 25.01.2013, 16:35
KokoZzz вне форума Посмотреть профиль Отправить личное сообщение для KokoZzz Найти все сообщения от KokoZzz
  № 1  
Ответить с цитированием
KokoZzz

Регистрация: Jan 2013
Сообщений: 18
The bomb! кастомное изменение размеров дочерних элементов Sprite

у меня имеется порядка 4 вложенных спрайтов. изменение размеров по средствам width || height происходит у корневого. могу ли я как то предотвратить изменение scaleX && scaleY у дочерних элементов?

Код AS3:
stage.scaleMode = StageScaleMode.NO_SCALE;
не помогло

Старый 25.01.2013, 16:38
Tails вне форума Посмотреть профиль Отправить личное сообщение для Tails Найти все сообщения от Tails
  № 2  
Ответить с цитированием
Tails
 
Аватар для Tails

блогер
Регистрация: Dec 2008
Адрес: г. Чебоксары
Сообщений: 2,259
Записей в блоге: 6
Конкретно изменение Scale дочерних элементов не меняется. Визуально они деформируются, потому что на них применяется матрица трансформаций корневого спрайта.
__________________
Дети не должны знать о своих родителях

Старый 25.01.2013, 16:40
KokoZzz вне форума Посмотреть профиль Отправить личное сообщение для KokoZzz Найти все сообщения от KokoZzz
  № 3  
Ответить с цитированием
KokoZzz

Регистрация: Jan 2013
Сообщений: 18
есть ли способ изменить родительский объект, не влияя на дочерние?

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

Регистрация: Oct 2010
Адрес: Харьков
Сообщений: 616
Записей в блоге: 1
Отправить сообщение для strangedk с помощью ICQ Отправить сообщение для strangedk с помощью Skype™
Думаю, можно наследоваться от Sprite, и переопределить scaleX/scaleY или width/height

Но вообще это плохая практика, полагаю. Если трансформация не должна влиять на детей, тогда это не должны быть дети, пусть будут в отдельном контейнере, и все дела.
__________________
adobe AS3 manual

Старый 25.01.2013, 17:10
KokoZzz вне форума Посмотреть профиль Отправить личное сообщение для KokoZzz Найти все сообщения от KokoZzz
  № 5  
Ответить с цитированием
KokoZzz

Регистрация: Jan 2013
Сообщений: 18
они должны лежать в этом контейнере, но высоту и ширину мне надо задавать самостоятельно.
можете мне подсказать, как переопределить свойство width?

Код AS3:
override public function set width(value:Number):void{
        //каким образом мне задать ширину компонента, не передавая свойство детям?
        super.width = value; 
}

Старый 25.01.2013, 17:12
strangedk вне форума Посмотреть профиль Отправить личное сообщение для strangedk Найти все сообщения от strangedk
  № 6  
Ответить с цитированием
strangedk
 
Аватар для strangedk

Регистрация: Oct 2010
Адрес: Харьков
Сообщений: 616
Записей в блоге: 1
Отправить сообщение для strangedk с помощью ICQ Отправить сообщение для strangedk с помощью Skype™
наоборот, переопределять нужно у детей. без вызова super
но повоторюсь, это ойойой какой костыль
__________________
adobe AS3 manual

Старый 25.01.2013, 17:17
iflamberg вне форума Посмотреть профиль Отправить личное сообщение для iflamberg Найти все сообщения от iflamberg
  № 7  
Ответить с цитированием
iflamberg
 
Аватар для iflamberg

Регистрация: Jan 2009
Сообщений: 1,651
Цитата:
каким образом мне задать ширину компонента, не передавая свойство детям?
Да никак, как вы не поймете. Дело в том, что если у спрайта-родителя вы измените width или scaleX, то у ребенка они не изменятся вообще! Просто родительская матрица искажения будет наложена на весь контейнер. Можно только компенсировать
Код AS3:
override public function set width(value:Number):void{
        var k:Number = super.width/value;
        child.width *= k; //компенсируем ребенку изменение ширины родителя
        super.width = value; 
}
__________________
мой пустой блог

Старый 25.01.2013, 17:20
strangedk вне форума Посмотреть профиль Отправить личное сообщение для strangedk Найти все сообщения от strangedk
  № 8  
Ответить с цитированием
strangedk
 
Аватар для strangedk

Регистрация: Oct 2010
Адрес: Харьков
Сообщений: 616
Записей в блоге: 1
Отправить сообщение для strangedk с помощью ICQ Отправить сообщение для strangedk с помощью Skype™
Цитата:
Сообщение от strangedk Посмотреть сообщение
ойойой какой костыль
всё равно печаль
__________________
adobe AS3 manual

Старый 25.01.2013, 17:21
KokoZzz вне форума Посмотреть профиль Отправить личное сообщение для KokoZzz Найти все сообщения от KokoZzz
  № 9  
Ответить с цитированием
KokoZzz

Регистрация: Jan 2013
Сообщений: 18
спасибо. буду читать мануалы.

Старый 25.01.2013, 18:08
expl вне форума Посмотреть профиль Отправить личное сообщение для expl Найти все сообщения от expl
  № 10  
Ответить с цитированием
expl

блогер
Регистрация: Feb 2006
Сообщений: 1,474
Записей в блоге: 3
Цитата:
у меня имеется порядка 4 вложенных спрайтов. изменение размеров по средствам width || height происходит у корневого. могу ли я как то предотвратить изменение scaleX && scaleY у дочерних элементов?
- у корневого изменяются размеры
- у дочерних не должны
Зачем тогда изменять у корневого? В нём что-то кроме дочерних есть? В нем что-то нарисовано?
Тогда берём это нарисованное, ложим в корневой и меняем размеры нарисованного, а корневой не трогаем.

Нужно чтобы размеры нарисованного менялись автоматом при изменении width и height корневого?
Тогда просто перегружаем width и height корневого, _не трогая_ нативные width и height корневого:
Код AS3:
private var _width:Number = 100;
override public get width():Number { return _width; }
override public set width(value:Number):void {
    _width = value;
    _spriteWithDrawings.width = value;
}

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

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

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


 


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


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