PDA

Просмотр полной версии : не меняется ширина и высота клипа


botbot
13.09.2011, 21:36
Создаю пустой клип, добавляю его на сцену, пытаюсь поменять размер - он не меняется. Вот код
package
{
public class Main extends Sprite
{

public function Main():void
{

if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
}


private function init(e:Event = null):void
{

var pane: MovieClip = new MovieClip();
addChild(pane);
trace('W: ' + pane.width); // Пишет 0
pane.width = 200;
trace('W: ' + pane.width); // Снова пишет 0 !!!
}
}

}
В общем почему так происходит и как клипу размер задать?

Wolsh
13.09.2011, 21:41
а с чего он должен меняться-то? он же пустой.

botbot
13.09.2011, 21:49
ну потому что там к нему сбоку должен прилипнуть другой клип, растянувшись по высоте первого пустого, а потом первый пустой заполняется дочерними элементами. Выходит, если клип пустой то размер у него всегда нулевой? И расширить в виде пустого холста никак?

TanaTiX
13.09.2011, 21:56
Да. Никак.

Wolsh
13.09.2011, 21:57
Ну это же логично))) Какие могут быть размеры и форма у Пустоты?
Когда ы контейнере есть какое-то содержимое, тогда у него есть размер в соответствии с этим содержимым.
Если очень хочется задать какие-то размеры, но оставить "пустым", можно закрасить его прозрачной заливкой.
private function init(e:Event = null):void
{
var pane: MovieClip = new MovieClip();
addChild(pane);
trace('W: ' + pane.width); // Пишет 0
pane.graphics.beginFill(0x000000, 0);
pane.graphics.drawRect(0, 0, 200, 100);
trace('W: ' + pane.width); // Пишет 200
}

dimarik
13.09.2011, 23:23
он же пустой [x]. Как всегда (http://www.flasher.ru/forum/showthread.php?t=102663). Ничто не ново под луной.

botbot
14.09.2011, 15:05
Ну это же логично))) Какие могут быть размеры и форма у Пустоты?
Когда ы контейнере есть какое-то содержимое, тогда у него есть размер в соответствии с этим содержимым.
Если очень хочется задать какие-то размеры, но оставить "пустым", можно закрасить его прозрачной заливкой.
private function init(e:Event = null):void
{
var pane: MovieClip = new MovieClip();
addChild(pane);
trace('W: ' + pane.width); // Пишет 0
pane.graphics.beginFill(0x000000, 0);
pane.graphics.drawRect(0, 0, 200, 100);
trace('W: ' + pane.width); // Пишет 200
}

Спасибо, учту на будущее.
Вообще я понял, что я делал не так. Я думал размер клипа это размер холста, на котором можно рисовать. Но выходит, размер определяется границами дочерних элементов или графикой на этом клипе и меняется сам при добавлении новых элементов (и отрисовке графики, я надеюсь). И при изменении размеров самого клипа всё содержимое тоже масштабируется, а не обрезается/добавляется пустое место. Странная система, надеюсь с ней не возникает проблем. Ну да ладно, хоть понял как с ней работать.

TanaTiX
14.09.2011, 15:14
Ничего странного. Если необходимо обрезать - используйте маски.

botbot
14.09.2011, 15:32
Маски не то, scrollRect вместо них есть у клипа. Уже пользую. Удобно, как раз видимо замена холста.

dimarik
15.09.2011, 10:05
Маски не то, scrollRect вместо них есть у клипа. Уже пользую. Удобно, как раз видимо замена холста.

Маска не обязательно будет прямоугольной. Замены холста нет, т.к. нет самого понятия холста. Вы что-то придумываете.