2012-05-03 93 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