我需要在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>
提前致谢,
格里
答案 0 :(得分:0)
这似乎是Adobe在sdk 4.6中修复的错误。
作为一些附加信息,将上面的pasteOp.textScrap行替换为:
pasteOp.textScrap = pasteOp.textScrap.clone()用于抛出空指针异常,而4.6现在也可以。
此外,只有当textarea / textinput为空时才会出现此错误。如果那里已有东西,一切都按预期工作。