2010-01-11 52 views
1

比方說,我有一個固定高度的畫布和一個垂直滾動條。畫布上有10個垂直線的孩子(如VBox),其高度超過了畫布的高度。根據滾動條的位置,一次只能看到一些兒童。Flex 3:確定滾動面板子是否可見

是否可以確定哪些孩子實際上可見?或者是否在屏幕上顯示特定的孩子?

+0

您是指您的瀏覽器的滾動條,還是在您的Flex應用程序中? – sberry 2010-01-11 19:38:17

+0

在flex應用程序中。附加到我的例子中假設的Canvas對象。 – organicveggie 2010-01-18 20:08:47

回答

1

我不知道這個答案的時效性,但我最近也有類似的問題,下面的代碼爲我工作:

if (item.y < container.verticalScrollPosition || item.y + item.height - container.verticalScrollPosition > container.height) { 

    // item is not (completely) visible 

} 

基本上,這是根據以下標準檢查:

1)物品的y位置位於容器當前的垂直滾動位置之上(即位於容器頂部邊界之外)?

2)項目的底部位置是否滾動到容器底部邊界之外?這是使用物品的底部位置(即物品的y位置加上其高度)減去當前的垂直滾動位置計算得出的。

如果您想檢查容器中的所有項目,那麼您必須循環並根據這些條件檢查每個項目。你可以把上面的代碼放在一個函數中,並返回該項是否可見。可能有更好的/更乾淨的方式,但我還沒有找到。