Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   htmlText переносит текст после тэга (http://www.flasher.ru/forum/showthread.php?t=183552)

zerAlex2 25.08.2012 05:29

htmlText переносит текст после тэга
 
Такя проблемка. Есть код:
Код AS3:

 
import flash.text.Font;
import flash.text.StyleSheet;
import fl.text.TLFTextField;
import flash.text.TextFormat;
import flash.text.TextFieldAutoSize;
 
public class Viewer extends MovieClip {
 
 private var fontSegoeWP        :Font;
 private var fontSegoeWPBold        :Font;
 private var textFormat                :TextFormat;
 
  public function Viewer(str:String) {
 
  fontSegoeWP=new EmbededFont();
  fontSegoeWPBold=new EmbededFont2();
  textFormat=new TextFormat();
  textFormat.font = fontSegoeWP.fontName;
  textFormat.size = 25;
 
  this.TLF_text.autoSize = TextFieldAutoSize.LEFT;
  this.TLF_text.defaultTextFormat = textFormat;
  this.TLF_text.embedFonts = true;                       
  var style:StyleSheet = new StyleSheet();
  style.parseCSS("h1{font-family: "+fontSegoeWPBold.fontName+"; fontWeight:bold}");
  var modifyText:String = str.split("\r").join("");
  this.TLF_text.styleSheet = style;
  this.TLF_text.htmlText = modifyText;
  }

Текст лежит в XML-ке:
Код AS3:

<InfoText>
<![CDATA[<Font size='32' color='#FF0000'>Так меняем размер и цвет</Font>, а так <h1> делаем болд.</h1> Всё, что вне тэгов печатается обычным шрифтом]]>
</InfoText>

Вот что получается:
[IMG]http://s3.********************/uploads/images/2012/08/01604cd37a1130b7f63334ceb75ce86f.jpg[/IMG]
Т.е. после закрытия тэга строка переходит на следующую линию.
Тэг <b> не использую, т.к. шрифт специфический, он без болда и htmlText тэг игнорирует.

Как htmlText заставить не переносить строку?

PS, sorry за орфографическую ошибку )

caseyryan 25.08.2012 06:47

Зачем там используется тег заголовка h1?
Естественно нормальный html будет считать это заголовком и перенесет остальную часть на следующую строку.
Нужно заменить тег на какой-то другой. Например <span>

zerAlex2 25.08.2012 12:03

А так пропадает болд (
[IMG]http://s2.********************/uploads/images/2012/08/e8e3e52f657307cf19fd0f7cb3e802f9.jpg[/IMG]

GBee 25.08.2012 12:14

Так для болда есть <b></b>

zerAlex2 25.08.2012 12:26

Я писал, шрифт специфический. С <b> </b> получается:
[IMG]http://s3.********************/uploads/images/2012/08/52fa13c0df12462cd4a5bc37c9f96ec9.jpg[/IMG]
Хоть, если отключить style, хоть если в style указать тэг b{...}
В общем, для того я второй шрифт и завёл.
Может htmlText какую-то блочность задаёт?

Wolsh 25.08.2012 12:44

Код AS3:

style.parseCSS("b {font-family: "+fontSegoeWPBold.fontName+"; fontWeight:bold}");

Правда насчет последнего правила не уверен, начертание итак болд, в самом шрифте. Требовать от него еще болда — значит требовать другой файл шрифта fontSegoeWPBold.. Это ошибка разработчика шрифта, он должен был указать одинаковый font family "SegoeWP" в обоих файлах, и полужирному начертанию указать что это болд)).. а так создал два файла разных шрифтов, то есть второй не считается начертанием болд для первого.

zerAlex2 25.08.2012 13:12

Нет, и так не работает (
Убрал второй шрифт и добавил цикл, для просмотра свойств шрифта:
Код AS3:

fontSegoeWPBold=new EmbededFont2();//Эту строку убрал
 
var fonts:Array = Font.enumerateFonts();
for (var f:int = 0; f < fonts.length; f++)
{
 var font:Font = (fonts[f] as Font)
 trace(font.fontName, ",", font.fontStyle, ",", font.fontType)
}

После убрал вообще всякий стиль, результат тот же.

Выдаёт (это с 2-мя подгруженными шрифтами):
Код:

Segoe WP Light , regular , embedded
Segoe WP , bold , embedded
Segoe WP Light , regular , embeddedCFF
Segoe WP , regular , embeddedCFF
Segoe WP Light , regular , embeddedCFF
Segoe WP , regular , embeddedCFF

Если же удалить из библиотеки второй шрифт, который я хотел использовать как болд:
Код:

Segoe WP Light , regular , embedded
Segoe WP Light , regular , embeddedCFF
Segoe WP , regular , embeddedCFF
Segoe WP Light , regular , embeddedCFF
Segoe WP , regular , embeddedCFF

Т.е. болда в первом шрифте "Segoe WP" нет, а во втором есть. Но второй тоже "Segoe WP", только болдовый.

Походу, из-за шрифта проблемы... Во всяком случае, раньше со стандартными шрифтами всё получалось.

Wolsh 25.08.2012 13:31

Вложений: 1
Я уже как-то говорил, что родной компилятор Flash IDE не позволяет назначать шрифтам "свое" имя семейства, то есть выдавать фактически разные шрифты за шрифты одного семейства. Когда шрифт импортируется в библиотеку, имя которое Вы вводите в поле в окне импорта, это имя Символа в библиотеке. Именно поэтому потом в коде приходится обращаться к шрифту как fontSegoeWPBold.fontName. Потому что настоящего имени шрифта Вы не знаете, точнее не задаете его самостоятельно. Во flex_sdk с тегами [Embed] все гораздо проще.

Wolsh 25.08.2012 13:34

В вашем списке есть нюанс — болд добавлен в библиотеку НЕ как CFF, поэтому не может быть использован TLFTextField.
Цитата:

Segoe WP , bold , embedded
Segoe WP , regular , embeddedCFF

mooncar 25.08.2012 13:58

Цитата:

Сообщение от zerAlex2 (Сообщение 1093709)
Может htmlText какую-то блочность задаёт?

Что значит "какую-то"? Вполне конкретную, описанную в спецификациях.
Цитата:

Теги <h1>,...,<h6> относятся к блочным элементам, они всегда начинаются с новой строки, а после них другие элементы отображаются на следующей строке.
Они используются для заголовков, и их нужно использовать для заголовков, а не для болда.


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

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