![]() |
|
||||||||||
|
|||||
|
Регистрация: Feb 2011
Сообщений: 42
|
В очередной раз застрял на элементарном.
Нужно отобразить область со строкой текста. Хочу, чтобы у области была backgroundAlpha, а у текста - размер шрифта. Работать нужно в рантайме в AS. Перекопал кучу классов отображения текста, начиная от TextField и Label и заканчивая RichEditableText. Эти два свойства есть только у RichText. Но не могу сделать, чтобы они работали. 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; Пробовал устанавливать и другие одноименные свойства у textFlow. Подскажите, что тут не так. Посмотрел примеры работы с этим классом, но там практически всегда используется MXML-разметка, со свойством content. В документации написано, что в коде AS работать с content не рекомендуется. С backgroundAlpha я еще могу разобраться - сделать Panel с текстом внутри. Но не могу ни в одном компоненте настроить размер шрифта! Кстати говоря, в документации к spark:Label написано о свойстве fontSize. Но у меня такого свойства нет (точно проверяю spark, а не mx). Последний раз редактировалось Sharkow; 19.04.2011 в 23:09. |
|
|||||
|
Регистрация: Nov 2010
Сообщений: 9
|
Привет!)
Ну, во-первых, у лейбла, на сколько я знаю, можно выставить размер шрифта таким способом: А сделать блок текста с задаваемым размером и задаваемой прозрачностью фона можно множеством разных способов. Как вариант, для фона создавать подложку в виде любого экземпляра класса Shape. Это удобно тем, что можно потом хоть что с этой подложкой делать, ее заливкой, обводкой и т.п. Например: 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); } А сам текст можно сделать, например, так: 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); 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. |
|
|||||
|
Sharkow, пользуйтесь официальной документацией. fontSize это стиль, а не свойство. Не путайте их.
|
|
|||||
|
Регистрация: Feb 2011
Сообщений: 42
|
Andy Tim,
За такой исчерпывающий ответ спасибо Кстати, у самого Label есть объект graphics, так что наверно можно залить чем угодно из без подложки.alatar, Ну да, теперь ясно, что под стилем подразумевается. Жаль, что они только в MXML показали, как с ними работать. Спасибо. |
![]() |
![]() |
Часовой пояс GMT +4, время: 14:49. |
|
|
« Предыдущая тема | Следующая тема » |
|
|