PDA

Просмотр полной версии : Как содержимое объекта сделать фиксированным, если у самого объекта размеры меняются?


Loshadka
18.01.2008, 13:59
Немного поясню.
1. Есть одна большая флешка
width: 100%; height: 100%
2. В ней есть объект, у которого, скажем
_width = Stage.width / 2;
_height = Stage.height;
3. В этом объекте есть другие объекты.

И вопрос, как сделать так, чтобы внутренние объекты не растягивались при изменении размеров их родителя?

Сейчас сам склоняюсь к решению поместить все объекты в _root, и тогда без проблем все это можно будет реализовать, но проект достаточно большой и хотелось бы сохранить четкую и логичную структуру во всем.

з.ы. быстренько накидал пример для иллюстрации: http://ejika.net/test.html

Код примера:

_root.onLoad = function() {
var stageListener:Object = new Object();
stageListener.onResize = resizing();
Stage.scaleMode = "noScale";
Stage.addListener(stageListener);
}

_root.onEnterFrame = function() {
_root.sText.text = Stage.width + ", " + Stage.height;
_root.sText._x = Stage.width - _root.sText._width;
_root.sText._y = Stage.height - _root.sText._height;

_root.oIcons._width = Stage.width / 2;
_root.oIcons._height = Stage.height;
}

iNils
18.01.2008, 17:04
Считать _xscale и _yscale родителя и скорректировать по ним _xscale и _yscale потомка.

INK•
21.01.2008, 03:39
Считать _xscale и _yscale родителя и скорректировать по ним _xscale и _yscale потомка.

ну это уж очень деревяный способ, учитывая то что родитель как раз состоит и потомков.

iNils
21.01.2008, 03:54
ну это уж очень деревяный способ, учитывая то что родитель как раз состоит и потомков.Вот именно потому, что родитель и состоит из потомков, надо использовать _xscale и _yscale.
Я так понимаю, что кроме бесполезной критики предложить больше нечего?

INK•
21.01.2008, 04:07
Вы, Дедушка Мороз не нервничайте пожалуйста.
А предложить всегда есть чего.

Я бы вот что сделал.
Выделил бы в том что вы называете "родитель" два слоя.
первый слой это контейнер в который загнал бы эти ваши квадраты.
второй слой маска поверх контейнера, шириной и высотой которой уже бы и манипулировал относительно размера видемой области.
Тоесть. То что мы видим всегда будет заданого размера (как видно из вашего примера 50% ширины экрана) а сами квадратики масштабироватся при этом не будут.

iNils
21.01.2008, 04:13
Бесполезная конструкция, учитывая, что координаты объектов потомков при масшабировании меняются.

INK•
21.01.2008, 04:27
насколько я понял Loshadka хочет добится такого эфекта
http://ink.envisionext.com/tmp/stage.html

Loshadka
21.01.2008, 12:07
Спасибо всем за помощь. Проблема решена. Она была в моей математике, т.к. я нормально не мог написать уравнение вычисляющее процентное отношение потомка. :(
Выложил рабочий пример: http://ejika.net/test.html

_root.onEnterFrame = function() {

_root.oIcons._width = Stage.width;
_root.oIcons.oObj._xscale = 100 / _root.oIcons._xscale * 100;
}