TextInput控件除了输入数据,如果文本和一个数据双向绑定(一般是需要通过按钮改变文本,比如微调数字控件),在输入、选择文本、点击按钮改变文本等操作之后会出现错误。
断在flashx.textLayout.container::ContainerController文件中,scrollTimerHandler函数,textFlow.interactionManager == null处。
TypeError: Error #1009: 无法访问空对象引用的属性或方法。
at flashx.textLayout.container::ContainerController/http://ns.adobe.com/textLayout/internal/2008::scrollTimerHandler()[C:\Vellum\branches\v1\1.0\dev\output\openSource\textLayout\src\flashx\textLayout\container\ContainerController.as:1501]
at flash.utils::Timer/_timerDispatch()
at flash.utils::Timer/tick()
tlf_internal function scrollTimerHandler(event:Event):void
{
// trace("BEGIN scrollTimerHandler");
if (!_scrollTimer)
return;
// shut it down if not in this container
if (textFlow.interactionManager == null || textFlow.interactionManager.activePosition < absoluteStart || textFlow.interactionManager.activePosition > absoluteStart+textLength)
event = null;
......
}
困扰了一个多月,网上也搜不到,就一直没解决。
后来发现TextInput中:
1.在点击focus置于其中时,文本会上移,focus取消又下移。
2.上移后文本有可能超过控件皮肤范围。
3.点击到文本后,鼠标左键UP后,文字还会被选择。
这些情况都不是很美观,应该是TextInput的皮肤没有调整很准,文本控件超过了控件大小。
于是修改了TextInput的皮肤(移动文本,缩小文本,扩大控件等),使其文本控件置于整个控件之内。
结果上面3种情况都没了,而且上面的错误也没再出现了。
这个错误的根本原因还没找到。