0

Flex 4.10 SDK の任意のバージョンを使用している場合、次のコードは特定の文字範囲ではなく段落全体にフォーマットを適用します。

https://issues.apache.org/jira/browse/FLEX-33791

<?xml version="1.0"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" creationComplete="OnCreationComplete(event)">
    <s:TextArea width="100%" height="100%" id="txt" editable="true">
        <s:content>
            Lorem ipsum dolor sit amet, consectetur adipiscing elit.<s:br/>
            Vivamus eu erat ac est ullamcorper egestas eget nec mauris.<s:br/>
        </s:content>
    </s:TextArea>

    <fx:Script><![CDATA[
        import flashx.textLayout.edit.EditManager;
        import flashx.textLayout.formats.TextLayoutFormat;

        import mx.events.FlexEvent;

        private function OnCreationComplete(event:FlexEvent):void
        {
                var objFormat:TextLayoutFormat = new TextLayoutFormat();
                objFormat.backgroundColor = 0xB9CCFF;
                txt.selectRange(5, 8);
                var objManager:EditManager =  txt.textFlow.interactionManager as EditManager;
                objManager.applyFormat(objFormat, objFormat, objFormat);
        }

        ]]></fx:Script>
</s:Application>
4

1 に答える 1

2

applyFormat の 3 つのパラメーターは、フォーマットを適用できる 3 つの異なる方法に対応しています。

最初のパラメーター「leafFormat」は、SpanElement (または、TLF が生成する XML を考える場合はノード) などの LeafElement オブジェクトに適用され、現在の (または指定された) SelectionState が含まれていない場合は、実際に新しいリーフを作成します。 LeafElement 全体。

2 番目のパラメーター「paragraphFormat」は、現在の (または指定された) SelectionState が含まれる段落全体に適用されます。したがって、段落から数文字だけを選択して applyFormat を呼び出し、「paragraphFormat」パラメーターの背景色を渡すと、段落全体が背景色になります。

3 番目のパラメーター「containerFormat」は、私が使用したことがなく、まったく調べていません。テキストのレイアウトに役立つ ContainerController オブジェクト全体にフォーマットを適用すると思います。

4 つのパラメーターのいずれに対しても、null (または完全に異なる形式) を安全に渡すことができます。

つまり、要するに、関数呼び出しを次のように変更するだけで問題を解決できると思います。

objManager.applyFormat(objFormat, null, null);
于 2013-10-03T20:43:49.337 に答える