Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > Flex

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 19.04.2011, 22:52
Sharkow вне форума Посмотреть профиль Отправить личное сообщение для Sharkow Найти все сообщения от Sharkow
  № 1  
Ответить с цитированием
Sharkow
 
Аватар для Sharkow

Регистрация: Feb 2011
Сообщений: 42
По умолчанию Простейшее отображение текста

В очередной раз застрял на элементарном.

Нужно отобразить область со строкой текста. Хочу, чтобы у области была backgroundAlpha, а у текста - размер шрифта. Работать нужно в рантайме в AS.
Перекопал кучу классов отображения текста, начиная от TextField и Label и заканчивая RichEditableText.

Эти два свойства есть только у RichText. Но не могу сделать, чтобы они работали.
Код AS3:
private var rText:RichText = new RichText();
rText.width=...;
rText.height=...;
var f:TextLayoutFormat = new TextLayoutFormat();
f.backgroundAlpha = .4;
f.backgroundColor = 0x222222;
f.fontSize = 30;
rText.textFlow.hostFormat = f;
В результате получаю просто прозрачную область c текстом. Размер текста - по умолчанию, а не 30.
Пробовал устанавливать и другие одноименные свойства у textFlow.

Подскажите, что тут не так. Посмотрел примеры работы с этим классом, но там практически всегда используется MXML-разметка, со свойством content. В документации написано, что в коде AS работать с content не рекомендуется.

С backgroundAlpha я еще могу разобраться - сделать Panel с текстом внутри.
Но не могу ни в одном компоненте настроить размер шрифта!

Кстати говоря, в документации к spark:Label написано о свойстве fontSize. Но у меня такого свойства нет (точно проверяю spark, а не mx).


Последний раз редактировалось Sharkow; 19.04.2011 в 23:09.
Старый 20.04.2011, 09:48
Andy Tim вне форума Посмотреть профиль Отправить личное сообщение для Andy Tim Найти все сообщения от Andy Tim
  № 2  
Ответить с цитированием
Andy Tim

Регистрация: Nov 2010
Сообщений: 9
Привет!)
Ну, во-первых, у лейбла, на сколько я знаю, можно выставить размер шрифта таким способом:

Код AS3:
label.setStyle("fontSize", 14);
А сделать блок текста с задаваемым размером и задаваемой прозрачностью фона можно множеством разных способов. Как вариант, для фона создавать подложку в виде любого экземпляра класса Shape. Это удобно тем, что можно потом хоть что с этой подложкой делать, ее заливкой, обводкой и т.п. Например:

Код AS3:
private function drawPlate(x:int = 0, y:int = 0):void {
	var matrix:Matrix = new Matrix();
	matrix.createGradientBox(300, 50, (Math.PI/180)*90, x, y);
	var rect:Shape = new Shape();
	rect.graphics.lineStyle(2,0x96BBC4);
	rect.graphics.beginGradientFill( 
		GradientType.LINEAR, 
		[ 0xC7F0F7, 0x263941 ],
		[ 1, 1 ], // это прозрачность
		[ 0, 255 ],
		matrix 
	); 
	rect.graphics.drawRoundRect(x, y, 300, 50, 14, 14);
	rect.graphics.endFill();
	addChild(rect);
}
Здесь градиентная заливка сделана. Можно делать обычную, задавать прозрачность и т.п. Прозрачность - третий параметр в beginGradientFill(). Ну, то есть, поизучав доки на тему flash.display.graphics, можно сделать практически все, что душе угодно.

А сам текст можно сделать, например, так:

Код AS3:
var format:TextFormat = new TextFormat();
format.color = 0xff0006;
format.align = "center";
format.size = 24;
format.font = "Arial";
var text:TextField = new TextField();
addChild(text);
text.text = _text;
text.width = 200;
text.setTextFormat(format);
или вот так:

Код AS3:
var format:ElementFormat = new ElementFormat(
	new FontDescription("Arial"), 12, 0xff0006 // второй параметр - размер
);
var tb:TextBlock = new TextBlock(new TextElement(_text, format));
var text:TextLine = tb.createTextLine();
addChild(text);
Останется только правильно связать текстовый элемент с подложкой. В едином контейнере, например, или отдельным классом.
Еще, кстати, по-моему в spark.components.TextArea можно задать все, что тебе нужно.

Уверен, есть еще много всяких способов)


Последний раз редактировалось Andy Tim; 20.04.2011 в 10:00.
Старый 20.04.2011, 10:56
alatar вне форума Посмотреть профиль Отправить личное сообщение для alatar Найти все сообщения от alatar
  № 3  
Ответить с цитированием
alatar
 
Аватар для alatar

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
Sharkow, пользуйтесь официальной документацией. fontSize это стиль, а не свойство. Не путайте их.

Старый 20.04.2011, 18:11
Sharkow вне форума Посмотреть профиль Отправить личное сообщение для Sharkow Найти все сообщения от Sharkow
  № 4  
Ответить с цитированием
Sharkow
 
Аватар для Sharkow

Регистрация: Feb 2011
Сообщений: 42
Andy Tim,
За такой исчерпывающий ответ спасибо Кстати, у самого Label есть объект graphics, так что наверно можно залить чем угодно из без подложки.

alatar,
Ну да, теперь ясно, что под стилем подразумевается. Жаль, что они только в MXML показали, как с ними работать.
Спасибо.

Создать новую тему Ответ Часовой пояс GMT +4, время: 12:03.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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