Форум 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=130695)

LA_ 01.10.2009 23:40

Информационное окно с меняющимся размером всегда в центре
 
Что-то я совсем запутался.
Нужно создать Информационное окно, в котором может меняться текст, в зависимости от объема текста будет меняться и размер окна, окно должно быть всегда в центре экрана.
(наверняка изобретаю велосипед, если есть готовое решение - поделитесь, плз)

Реализую следующим образом.
Окно _info_panel содержит:
- рамку: mcFrm типа MovieClip, с заданным scale9Grid, instance frame'a со scaleY не равным 1 уже;
- заголовок: txtTitle DynamicText;
- сам текст: txtText DynamicText.

Окно создается в коде AS.
Оно позиционируется в центре экрана и ему задается текст (с этим проблем нет), размер рамки меняется в зависимости от объема текста:
Код AS3:

_info_panel.x = Math.round(_stage_width/2 - _info_panel.width/2); 
_info_panel.y = Math.round(_stage_height/2 - _info_panel.height/2);
_info_panel.txtTitle.text = "Заголовок";
_info_panel.txtText.text = "Некий текст.\n\nВ несколько строк...";
_info_panel.txtText.autoSize = TextFieldAutoSize.CENTER;
_info_panel.mcFrm.height = _info_panel.txtText.textHeight + 85;

85 - высота двух границ рамки + заголовка + необходимого пространства между рамкой, текстом и заголовком.

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

Добавлено через 23 часа 24 минуты
товарищи, нет ли готового кода, реализующего этот функционал?

Добавлено через 25 часов 52 минуты
вот так все заработало как надо:
Код AS3:

_info_panel.txtText.autoSize = TextFieldAutoSize.CENTER;      
_info_panel.txtTitle.text = "текст заголовка";
_info_panel.txtText.text = "текст сообщения";
_info_panel.mcFrm.height = 20 + _info_panel.txtTitle.height + 20 + _info_panel.txtText.height + 40;
_info_panel.txtText.y = 20 + _info_panel.txtTitle.height + 20;
_info_panel.txtTitle.y = 30;
_info_panel.x = Math.round(_stage_width/2 - _info_panel.width/2);
_info_panel.y = Math.round(_stage_height/2 - _info_panel.height/2);



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

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