1

我需要在我的 Flex 4 应用程序中捕获和修改粘贴操作的内容。我正在监听 TextOperation.CHANGING 事件,取出 PasteOperation,并设置它的 textScrap 属性。一切似乎都在工作,除了在我修改 textScrap 之后,在粘贴中添加了一个换行符。我创建了一些示例代码来说明问题的最简单版本。我实际上并没有更改副本,我正在获取现有的 textScrap 的 textFlow,用它创建一个新的 TextScrap,并将其设置在 PasteOperation 上。我这样做是为了排除创建 TextFlow 的问题:

<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
           xmlns:s="library://ns.adobe.com/flex/spark" 
           xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600">
<fx:Declarations>
    <!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>

<fx:Script>
    <![CDATA[
        import flash.desktop.Clipboard;
        import flash.desktop.ClipboardFormats;

        import flashx.textLayout.edit.TextScrap;
        import flashx.textLayout.elements.TextFlow;
        import flashx.textLayout.operations.PasteOperation;
        import flashx.textLayout.tlf_internal;

        import spark.events.TextOperationEvent;

        use namespace tlf_internal;

        protected function textArea_changingHandler(event:TextOperationEvent):void
        {
            if (event.operation is PasteOperation)
            {
                var pasteOp:PasteOperation = event.operation as PasteOperation;

                pasteOp.textScrap = new TextScrap(pasteOp.textScrap.textFlow);
            }
        }

    ]]>
</fx:Script>
<s:TextArea id="textArea" changing="textArea_changingHandler(event)"/>
</s:Application>

提前致谢,

格里

4

1 回答 1

0

这似乎是 Adob​​e 在 sdk 4.6 中修复的错误。

作为一些附加信息,将上面的 pasteOp.textScrap 行替换为:

pasteOp.textScrap = pasteOp.textScrap.clone() 用于抛出空指针异常,现在在 4.6 中也可以使用。

此外,此错误仅在 textarea / textinput 为空时出现。如果那里已经有东西,一切都会按预期进行。

于 2012-08-24T19:53:51.340 回答