我在向移动应用中的可滚动列表添加多个表单输入时遇到问题。
我最多可以添加110个条目,这样可以正常工作,但添加更多条目会产生错误" ArgumentError:错误#2006:提供的索引超出范围。"。单步执行代码我可以看到ScrollableStageText类在尝试运行updateViewPort()时会产生错误,该函数会绘制一个矩形并计算y值超过8192。
我已创建此Flash构建器代码,该代码将重现该错误。
<?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="HomeView"
initialize="init()">
<fx:Script>
<![CDATA[
import spark.components.FormItem;
public function init():void
{
var fi:FormItem;
var ti:TextInput;
for (var i:int = 0; i < 150; i++)
{
fi = new FormItem;
fi.label = i.toString();
fi.percentWidth=100;
ti = new TextInput;
ti.id="item_"+i;
ti.percentWidth=100;
ti.text = "";
ti.styleName = "ti";
fi.addElement(ti);
listtest.addElement(fi);
}
}
]]>
</fx:Script>
<fx:Declarations>
<!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>
<s:Scroller width="100%" height="100%" >
<s:VGroup id="listtest" width="100%" horizontalAlign="center">
<s:TextInput />
</s:VGroup>
</s:Scroller>
</s:View>
我可以看到apache论坛上已经出现了这个问题,但是我看不到如何在flash builder中设置y值作为建议here。
对此问题的任何帮助都会受到赞赏。
答案 0 :(得分:0)
这是一个有趣的错误。
在Apache团队提供修复之前,我能想到的唯一解决方案是覆盖TextInput类并提供修复,直到错误地尝试将StageText实例y属性设置为超出可接受值的方法。
不幸的是,StageText是一个最后的类,所以它不能被覆盖哪个更容易但是组合是可能的并且可能是正确的方法。