ActionScript - setTextFormat () более одного раза на одной строке? - PullRequest
1 голос
/ 04 мая 2011

Я безуспешно пытаюсь присвоить textFormat двум разным частям одной и той же строки, но во второй раз он не регистрируется и остается форматом текста по умолчанию.оба стиля (обычный и полужирный) шрифта встроены.

//Create Text Field
private function createAboutWindowTextField():TextField
    {
    var aboutWindowFont:Font = new AboutWindowFont();

    var regularFormat:TextFormat = new TextFormat();
    var boldFormat:TextFormat = new TextFormat();

    regularFormat.size = boldFormat.size = 12;
    regularFormat.font = boldFormat.font = aboutWindowFont.fontName;
    regularFormat.align = boldFormat.align = TextFormatAlign.CENTER;
    boldFormat.bold = true;

    var result:TextField = new TextField();
    result.antiAliasType = AntiAliasType.ADVANCED;
    result.autoSize = TextFieldAutoSize.LEFT;
    result.defaultTextFormat = regularFormat;
    result.embedFonts = true;
    result.multiline = true;
    result.selectable = false;
    result.type = TextFieldType.DYNAMIC;

    result.text =   "First Header\n" +
                    "Version 1.0\n" +                                                           
                    "Copyright © 2011\n\n" +

                    "Second Header:\n" +
                    "Other info";                                                       

    result.setTextFormat(boldFormat, result.text.indexOf("First Header"), ("First Header").length);
    result.setTextFormat(boldFormat, result.text.indexOf("Second Header:"), ("Second Header:").length);

    return result;
    }

приведенный выше код должен привести к тому, что «Первый заголовок» и «Второй заголовок:» станут жирными, но только «Первый заголовок» будетустановить как жирный, в то время как «Второй заголовок:», кажется, просто игнорируется.в чем проблема?

1 Ответ

2 голосов
/ 04 мая 2011

Третий параметр в вашей функции setTextFormat неверен.Вы используете длину, когда хотите получить конечный индекс.Например:

var indexA:int = result.text.indexOf("Second Header:");
result.setTextFormat(boldFormat, indexA, indexA + ("Second Header:").length);

Мне нравится использовать StyleSheet для форматирования текстового поля с несколькими шрифтами или весом шрифта.Это немного проще в управлении.

var reg:HelveticaReg = new HelveticaReg();
var bold:HelveticaBold = new HelveticaBold();

var format:TextFormat = new TextFormat(reg.fontName, 14, 0x000000);

var ss:StyleSheet = new StyleSheet();
ss.setStyle(".bold", {fontFamily:bold.fontName});

var tf:TextField = new TextField();
tf.width = 400;
tf.multiline = true;
tf.wordWrap = true;
tf.autoSize = TextFieldAutoSize.LEFT;
tf.selectable = false;
tf.antiAliasType = AntiAliasType.ADVANCED;
tf.embedFonts = true;
tf.type = TextFieldType.DYNAMIC;
tf.defaultTextFormat = format;
tf.styleSheet = ss;
tf.htmlText = "<span class='bold'>Lorem ipsum dolor</span> sit amet, consectetur adipiscing elit.";
addChild(tf);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...