Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Изменение размера элементов при изменении размера parent (http://www.flasher.ru/forum/showthread.php?t=135255)

sergeik81 19.01.2010 18:06

Изменение размера элементов при изменении размера parent
 
Суть проблемы в следующем.
Есть флэшка, которая динамически изменяет свой размер с помощью js.
Так вот, когда она изменяет свой размер, то все потомки автоматически тоже изменяют размер, кроме того изменяется и просто положение этих элементов, хотя всем им жестко прописаны соответствующие координаты.
Как сделать так, чтобы размеры у детей не менялись и лэйаут оставался прежним?
Я уже замучался, и scale пробовал, и просчитывал размеры в зависимости от размеров стейджа - ведет себя непонятно все равно.
И вообще не очень понимаю, как работает механизм изменения размеров у детей при изменении размеров у родителей. Может дадите умные советы?
Был бы очень благодарен

Gaen 19.01.2010 20:36

Код AS3:

stage.scaleMode = StageScaleMode.NO_SCALE;
stage.align = StageAlign.TOP_LEFT;


sergeik81 20.01.2010 00:57

Спасибо, но это не влияет.
Я, в принципе, знаю, что при изменении размеров у parent, нужно изменять и размеры у child соответствующим образом или вообще лучше не пихать в этот parent, но что за бред? Это мало поддается какой-то логике, по крайней мере очень тяжело становится реализовывать контейнеры. В том же свинге ничего подобного просто нет.
Немного диковато выглядит с первого раза.
Может есть какие-то решения? Просто как тогда в том же флексе все работает? Или там играет тот факт, что в updateDisplayList передаются unscaledHeight, unscaledWidth?

nOobCrafter 20.01.2010 01:12

можнон прпобовать так:
- передаете через флешварс исходные размеры ролика (или зашиваете их во флешку)
- далее слушаем событие ресайза и просходимся циклом по всем детишкам, на основении деофлтных занчений флешки ставим им размер и местоположение
имхо удобный вариант

leofit 20.01.2010 10:45

У Вас все дети лежат в контейнере, размер которого меняется?

Сделайте один мувик бекграундом, размер которого собираетесь изменять, а всех детей проинициализируйте отдельно, вот и все. При изменении флешки меняться будет только бекграунд, а координаты и размер кнопок, мувиков и прочего останутся неизменными..

Gaen 20.01.2010 16:54

В общем случае, если вы хотите сделать контейнер как во флексе, вам нужно переопределить для него геттеры и сеттеры width и height, и при изменении соответственно менять размеры одних детей и координаты других.

sergeik81 20.01.2010 18:48

Всем спасибо, все сделал.
Хотелось бы только понять, как переопределить геттеры и сеттеры width и height в таком случае?
Внутри самого флекса у UIComponent в этих сеттерах по сути вызываются только invalidate разные, которые в конечном счете приводят к measure и updateDisplayList. То есть вот таким макаром действовать?

Gaen 20.01.2010 19:05

Код AS3:

public override function set width(w:Number):void{
    this._width = w;
    this.mcBackground.width = w;
    this.mcRightAlignedContent.x = w - this.mcRightAlignedContent.width;
}//set width



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

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