Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Как добавить бекграунд у контейнера ? (http://www.flasher.ru/forum/showthread.php?t=144958)

iillyyaa 26.09.2010 02:48

Как добавить бекграунд у контейнера ?
 
суть, имеем контейнер

Код AS3:

var cont_prim:Sprite = new Sprite();

в него складываем разные тексты

Код AS3:

cont_prim.addChild(to_cont_opisanie);
cont_prim.addChild(to_cont_opisanie2);

хочется сделать, что бы был у этого контейнера бекграунд, а не прозрачный контейнер с текстами.. можно как то указать спрайту cont_prim бекграунд ? ну и рамку заодно :)

или же делать банально, добавить прямоугольник в контейнер размерами 0х0, когда будут добавлены все тексты, определить размеры контейнера и растянуть в нём прямоугольник ?

f.g.programmer 26.09.2010 11:06

А чем вам банальный способ не нравится? Можно врисовывать прямоугольник в cont_prim.graphics, и перерисовывать его при добавлении текстов.

iillyyaa 26.09.2010 14:08

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

TanaTiX 26.09.2010 14:48

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

samana 26.09.2010 14:50

А вы подпишите клип-фон на событие, и при появлении в нём чего нибудь пусть срабатывает функция масштабирования.
Код AS3:

fon.addEventListener(Event.ADDED,resizeIt)
function resizeIt(e:Event):void{
...
}


alatar 26.09.2010 15:21

Событие ADDED сработает один раз, когда контейнет (ну или фон, не важно) будет добавлен в дисплейлист родителя. Нужно переопределить addChild, removeChild и там уже вызывать перерисовку (если детишки не будут двигаться и менять размеры).

iillyyaa 26.09.2010 16:33

не, у меня всё просто... в контейнере несколько текстовых полей, данные в текстовых полях меняются, меняется и сам размер контейнера.. я могу когда буду обновлять данные, в конце изменить и размер бекграунда...

я думал может можно к самому спрайту-контейнеру прилепить бекграунд :)
типа контейнер.бекграунд = фффффф; :)

TanaTiX 26.09.2010 16:39

так не бывает.
а так поможет событие изменения содержимого текстового поля для автоматизации процесса

КорДум 26.09.2010 16:51

Черт знает, что у вас там конкретно за задача, но вот: http://help.adobe.com/ru_RU/AS3LCR/F...ackgroundColor

iillyyaa 26.09.2010 17:03

так, возник вопрос, что лучше добавить на бекграунд ?

Код AS3:

var to_cont_bg = new Sprite();
to_cont_bg.graphics.lineStyle(1, 0x0000FF);
to_cont_bg.graphics.beginFill(0xCCFFCC);
to_cont_bg.graphics.drawRect(0, 0, 1000, 1000);
to_cont_bg.x = 0;
to_cont_bg.y = 0;
cont_prim.addChild(to_cont_bg);

если делать размеры прямоугольника 10х10 а потом растягивать, то растягивается и рамка (тоесть её толщина)

единственное что придумал, это сделать прямоугольник 1000х1000, потом уменьшить до 10х10 и потом опять уже увеличить до размера контейнера

Код AS3:

to_cont_bg.width = 10;
to_cont_bg.height = 10;
to_cont_bg.width = cont_prim.width;
to_cont_bg.height = cont_prim.height;

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

тоесть текст1 в координатах 0х0
текст2 в координатах 50х50
картинка в координатах 100х100
текст3 в координатах 120х200

и вот размер контейнера стал к примеру 250х350
все тексты без бекграундов, а нужен общий бекграунд у всего контейнера и рамку...

это будет всплывающая подсказка (да вот такая навороченная)


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

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