我在移动应用程序的可滚动列表中添加多个表单输入时遇到问题。
我最多可以添加 110 个条目,这将起作用,但添加更多条目会产生错误"参数错误:错误 #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 值。
有关此问题的任何帮助都将得到赞赏。
这是一个有趣的错误。
在 Apache 团队提供修复之前,我能想到的唯一解决方案是覆盖 TextInput 类并提供修复,直到错误地尝试将 StageText 实例 y 属性设置为超出接受值的方法。
不幸的是,StageText 是最后一类,所以它不能被覆盖,这本来会更容易,但构图是可能的,并且可能是正确的方式。