2012-05-03 55 views
1

我正在开发移动应用程序。我有一个水平列表视图,每个项目都有一个很长的描述,所以我需要一个垂直滚动的独立信息。我正在尝试添加一个scroll作为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; 
    } 

,结果是一样的。列表中的空项目。我可以更改页面(列表水平滚动页面),下一个项目也是空的。如果我删除addElement(滚动条),我可以很好地看到这些项目,但没有我真正需要的垂直滚动条。所以问题在于滚动条。任何想法,我在做什么这么糟糕?请?我需要actioncript中的解决方案,我已经完成了更多的项目管理器,并且我将继承,而且在actionscript中移动设备的性能更好。先谢谢你。

回答

0

我解决了,用我注意到,滚动的内容没有因为显示该组的内容大小为0和私有可见变量是假Grigorash瓦西里的指导。所以滚动器的百分比大小不起作用,我更新了方法updateDisplayList。

override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void 
    {      
     super.updateDisplayList(unscaledWidth, unscaledHeight); 

     scroller.width = unscaledWidth; 
     scroller.height = unscaledHeight; 
     ... 
    } 

之后,滚动条是水平的,则水平滚动不工作,我想要一个verticalScroll如果需要在项目渲染器,所以滚轮的构造后,我设置滚动的horizo​​ntalPolicy等于关闭。其结果是下一个:如果你继承的itemRenderer的使用addElement方法代替的addChild

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

0

我从来没有使用滚动条在项目渲染...但是你可以检查出Scroller成分?像这样的:

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

不知道它是否会表现任何不同,但。

+0

谢谢你的回答,但我需要在动作的解决方案。 (建议用于移动应用程序中的大项目管理员)我将编辑我的问题。我认为我在上面做的和你在mxml中一样。但它不起作用。我不知道它是否适用于mxml,但是如果它起作用,它必须是在actionscript中有效的任何方式。 – ccsakuweb

+0

可以在ActionScript中实例化一个滚轮...只是创建一个并添加一个集团的,如上图所示... –

+0

滚动条使用VSCrollBar和HScrollBar控件所以它可能是它在做什么东西,上面的代码可能不会做。 –

0

为了工作,卷轴需要实际的宽度和高度。看起来你传递的组实际上是空的,虽然他们确实有一组percentWidth。添加内容到他们。

如果你滚动文本,它可能是更可行的使用内置的TextArea的滚动。

+0

谢谢你的回答,但事实并非如此。正如我在问题中所说的那样,该组织有内容,如果我删除super.addElement(scroller);显示组内容。内容不仅是文字。它有bitmapimages,一个形状,几个stylabletext ..所以这个团队不是空的,我可以看到它没有滚动。 – ccsakuweb

+1

试着在你的组被填充并在行上放置一个断点后分配视口 - 确保该组实际上有正确的'contentHeight'和'contentWidth';我也建议使用'addElement()'而不是'super.addElement()'(这有点神秘) –

+0

哈哈哈昨天我放弃它,是因为我想覆盖该方法的类将继承这一个,滚动的itemrenderers。 – ccsakuweb