我正在开发一款移动应用。我有一个带有水平列表的视图,每个项目都有很长的描述,所以我需要一个垂直滚动来获取该独立信息。我正在尝试添加一个滚动作为itemRenderer的Child。我不明白。谁知道我做得不好? 我有一个继承ItemRenderer的类(我也尝试过AsFusion的BaseRenderer,它似乎有更多的移动应用程序性能,结果相同)。 这是我的代码中滚动的一部分:
override protected function createChildren():void
{
super.createChildren();
scroller = new VScrollBar();
scroller.percentHeight = 100;
scroller.setStyle('right', 0);
scrollGroup = new Group();
scrollGroup.percentHeight = 100;
scrollGroup.percentWidth = 100;
super.addElement(scroller);
super.addElement(scrollGroup);
scroller.viewport = scrollGroup;
}
我也试过
override protected function createChildren():void
{
super.createChildren();
scroller = new Scroller();
scroller.percentHeight = 100;
scroller.percentWidth = 100;
scrollGroup = new Group();
scrollGroup.percentHeight = 100;
scrollGroup.percentWidth = 100;
super.addElement(scroller);
super.addElement(scrollGroup);
scroller.viewport = scrollGroup;
}
结果是一样的。列表中的空项。我可以更改页面(列表水平滚动的页面注释),下一个项目也是空的。如果我删除addElement(scroller),我可以完美地看到这些项目,但没有我真正需要的垂直滚动。所以问题出在卷轴上。知道我做得那么糟糕吗?请?我需要actionscript中的解决方案,我有更多的itemrenderers完成,我将继承,并且动作的性能在actionscript中更好。提前谢谢。
答案 0 :(得分:0)
我从未在项呈示器中使用滚动条......但是您可以查看Scroller组件?像这样:
<s:ItemRenderer>
<s:Scroller width="100%" height="100%">
<s:Group>
<Your_components_here />
</s:Group>
</s:Scroller>
</s:ItemRenderer>
不确定它是否会有任何不同。
答案 1 :(得分:0)
为了工作,卷轴需要实际的宽度和高度。您传递的组似乎实际上是空的,尽管它们有一组percentWidth
。将内容添加到其中。
如果您正在滚动文字,那么使用TextArea
的内置滚动条件可能更为可行。
答案 2 :(得分:0)
我解决了,在Grigorash Vasilij的指导下,我注意到滚动条的内容没有显示,因为在组中内容大小为0而私有可见变量为false。因此,滚动条的百分比大小无效,我在方法updateDisplayList中更新了它。
override protected function updateDisplayList( unscaledWidth:Number, unscaledHeight:Number ):void
{
super.updateDisplayList( unscaledWidth, unscaledHeight );
scroller.width = unscaledWidth;
scroller.height = unscaledHeight;
...
}
之后,滚动条是水平的,然后水平滚动不起作用,我想在项目渲染器中需要一个verticalScroll,所以在Scroller的构造函数之后我将滚动的horizontalPolicy设置为off。结果是下一个:
override protected function createChildren():void
{
super.createChildren();
scroller = new Scroller();
scroller.percentHeight = 100;
scroller.percentWidth = 100;
scroller.setStyle("horizontalScrollPolicy", "off");
scrollGroup = new Group();
scrollGroup.percentHeight = 100;
scrollGroup.percentWidth = 100;
addChild(scrollGroup);
scroller.viewport = scrollGroup;
addChild(scroller);
}
我的类继承BaseRenderer from Asfusion如果你继承了itemrenderer,请使用addElement而不是addChild。