如何在文本区域中选择文本粗体,斜体等,然后将其添加到富文本?

时间:2013-05-03 06:42:56

标签: actionscript-3 flex flex4.6

我在文本区域中选择了粗体,斜体等文本,但在富文本上添加文本时,我无法保持粗体,斜体属性。

1 个答案:

答案 0 :(得分:1)

好的,看。让我们一步一步地分析我们的问题:

问题:我们有文字,我们需要将原始文字的选定文字更改为粗体;

<强>解决方案

1)选择一个文本来分隔字符串

2)将单独字符串的样式更改为粗体(或其他样式)

3)用粗体刺痛收集初始非粗体字符串并显示结果:)

我认为有几种方法可以解决这个问题,但我建议如下:

<?xml version="1.0" encoding="utf-8"?>
<s:View xmlns:fx="http://ns.adobe.com/mxml/2009" 
    xmlns:s="library://ns.adobe.com/flex/spark" title="Test">
<s:VGroup>
    <s:RichEditableText id="ret" text="Test Text String for selection" />
    <s:Button id="btnBold" label="Set Bold for Selection" click="btnBold_clickHandler(event)"/>
</s:VGroup>
<fx:Declarations>
    <!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>

<fx:Script>
    <![CDATA[
        import flashx.textLayout.conversion.TextConverter;

        protected function btnBold_clickHandler(event:MouseEvent):void
        {
            setBoldForSelectionTex();
        }

        private function setBoldForSelectionTex():void
        {
            var startSelectionPos:int   = 0;
            var endSelectionPos:int     = 0;

            if(ret.selectionActivePosition > ret.selectionAnchorPosition)
            {
                endSelectionPos     = ret.selectionActivePosition;
                startSelectionPos   = ret.selectionAnchorPosition;
            }
            else
            {
                endSelectionPos     = ret.selectionAnchorPosition;
                startSelectionPos   = ret.selectionActivePosition;
            }

            var initialString:String    = ret.text;
            var startString:String      = ret.text.toString().substr(0, startSelectionPos);
            var middleString:String     = ret.text.toString().substr(startSelectionPos, endSelectionPos - startSelectionPos);
            var endString:String        = ret.text.toString().substr(endSelectionPos, initialString.length - endSelectionPos);
            var completeString:String   = startString +"<b>" + middleString + "</b>" + endString;

            ret.textFlow = TextConverter.importToFlow(completeString, TextConverter.TEXT_FIELD_HTML_FORMAT);
        }
    ]]>
</fx:Script>
</s:View>

我希望这对你有所帮助。