var tf:TextFlow;
var len:int = tf.numChildren;
for (var i:int = 0; i < len; i += 1)
{
tf.removeChildAt(0);
}
tf.flowComposer.composeToPosition();
tf.flowComposer.updateAllControllers();
TypeError: Error #1009: 无法访问空对象引用的属性或方法。
at flashx.textLayout.edit::ParaEdit$/insertText() flashx\textLayout\edit\ParaEdit.as:54]
at flashx.textLayout.operations::InsertTextOperation/doInternal() flashx\textLayout\operations\InsertTextOperation.as:196]
at flashx.textLayout.operations::InsertTextOperation/doOperation() flashx\textLayout\operations\InsertTextOperation.as:223]
at flashx.textLayout.edit::EditManager/doInternal() flashx\textLayout\edit\EditManager.as:723]
at flashx.textLayout.edit::EditManager/doOperation() flashx\textLayout\edit\EditManager.as:603]
at flashx.textLayout.edit::EditManager/flushPendingOperations() flashx\textLayout\edit\EditManager.as:873]
at flashx.textLayout.compose::StandardFlowComposer/updateToController() flashx\textLayout\compose\StandardFlowComposer.as:554]
at flashx.textLayout.compose::StandardFlowComposer/updateAllControllers() flashx\textLayout\compose\StandardFlowComposer.as:517]
tf.interactionManager.selectRange(tf.textLength, tf.textLength);
TypeError: Error #1009: 无法访问空对象引用的属性或方法。
at flashx.textLayout.edit::ParaEdit$/insertText() flashx\textLayout\edit\ParaEdit.as:54]
at flashx.textLayout.operations::InsertTextOperation/doInternal() flashx\textLayout\operations\InsertTextOperation.as:196]
at flashx.textLayout.operations::InsertTextOperation/doOperation() flashx\textLayout\operations\InsertTextOperation.as:223]
at flashx.textLayout.edit::EditManager/doInternal() flashx\textLayout\edit\EditManager.as:723]
at flashx.textLayout.edit::EditManager/doOperation() flashx\textLayout\edit\EditManager.as:603]
at flashx.textLayout.edit::EditManager/flushPendingOperations() flashx\textLayout\edit\EditManager.as:873]
at flashx.textLayout.compose::StandardFlowComposer/internalCompose() flashx\textLayout\compose\StandardFlowComposer.as:711]
at flashx.textLayout.compose::StandardFlowComposer/composeToPosition() flashx\textLayout\compose\StandardFlowComposer.as:837]
报错在ParaEdit.as,sibling为null
var sibling:FlowElement = textFlow.findLeaf(absoluteStart);
var siblingIndex:int;
var paragraph:ParagraphElement = sibling.getParagraph();
问题貌似是因为EditManager.as里insertText方法中的Event.ENTER_FRAME,这个下一帧处理好像会导致快速输入删除时候的不同步
if (captureLevel == 0 && origOperationState == null && controller && controller.container && allowDelayedOperations)
{
enterFrameListener = controller.container;
enterFrameListener.addEventListener(Event.ENTER_FRAME, enterFrameHandler, false, 1.0, true);
}
else
flushPendingOperations();
我的解决方法是同步处理 不让他下一帧处理 设置 EditManager(tf.interactionManager).allowDelayedOperations = false;
问题解决 具体为什么 还不是很清楚,先这么用着吧,如果有大神知道,希望可以交流