1

我正在开发一个移动应用程序。我有一个带有水平列表的视图,每个项目都有一个很长的描述,所以我需要一个垂直滚动来获取这些独立信息。我正在尝试将滚动添加为 itemRenderer 的子项。我不明白。有谁知道我在做什么坏事?我有一个继承 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;
    }

结果是一样的。列表中的一个空项。我可以更改页面(列表水平滚动的pagesnapping)并且下一项也是空的。如果我删除 addElement(scroller) 我可以完美地看到这些项目,但没有我真正需要的垂直滚动。所以问题出在滚动条上。知道我在做什么这么糟糕吗?请?我需要actionscript中的解决方案,我已经完成了更多的itemrenderers,我将进行继承,并且在actionscript中移动设备的性能更好。先感谢您。

4

3 回答 3

0

我从来没有在项目渲染器中使用过滚动条...但是您可能会查看Scroller组件?像这样的东西:

<s:ItemRenderer>
    <s:Scroller width="100%" height="100%">
        <s:Group>
            <Your_components_here />
        </s:Group>
    </s:Scroller>
</s:ItemRenderer>

不确定它的行为是否会有所不同。

于 2012-05-03T10:23:43.557 回答
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在item Renderer中,所以在Scroller的构造函数之后我将滚动的horizo​​ntalPolicy设置为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);

    }

我的类是从 Asfusion 继承 BaseRenderer如果你继承 itemrenderer 使用 addElement 而不是 addChild。

于 2012-05-04T07:24:10.517 回答
0

为了工作,卷轴需要一个实际的宽度和高度。您传递的组似乎实际上是空的,尽管它们确实有一个 set percentWidth。向其中添加内容。

如果您正在滚动文本,使用TextArea.

于 2012-05-03T12:50:12.100 回答