2012-03-08 6 views
0

자식으로 여러 Grid를 포함하는 VBox가 있습니다. 모든 그리드를 보려면 스크롤해야합니다. 그리드에는 버튼이 있습니다. 버튼 중 하나를 누르면 VBox에서 모든 그리드를 제거하고 그리드의 자식으로 채워서 해당 그리드의 자식을 표시합니다. 아이들을 제거하고 VBox를 이전 그리드로 채우려면 뒤로 버튼이 있습니다. 이제 뒤로 버튼을 누르면 아이를보기 위해 클릭 한 특정 그리드로 돌아가고 싶습니다. 그 스크롤의 맨 아래에 있다면 내가 돌아올 때 상위 그리드 대신 그리드가 보일 것입니다.하지만 항상 상위 그리드를 보여줍니다. 나는 setFocus 메서드를 시도했다. 그러나 그것은 효과가 없습니다.flex에서 Vbox의 특정 자식에 포커스를 설정하는 방법 4

저는 루트 부모로 캔버스를 가지고 있고 하나의 Vbox를 자식으로 가지고 있습니다. 그리고 Vbox에는 모든 그리드가 포함되어 있습니다. 그리드의 버튼을 누르면 Vbox는 앞서 설명한 Grid의 자식을 갖게됩니다. 그리드의 자식도 일부 그리드입니다.

도와주세요. 나는 여기에 꽤 붙어있다. 미리 감사드립니다 :)

답변

0

setFocus() 메서드는 구성 요소 만 활성화하고 뷰포트를 스크롤하지 않습니다. dataGroupVGroup을 할 수있는 당신이

var spDelta:Point = dataGroup.layout.getScrollPositionDeltaToElement(index); 

if (spDelta) 
{ 
    dataGroup.horizontalScrollPosition += spDelta.x; 
    dataGroup.verticalScrollPosition += spDelta.y; 
} 

를 사용할 수있는 수행합니다.

이 작동하지 또는 당신이 원하는하지 않는 경우, 당신은 당신이보고 그 높이로 스크롤을 이동 가지고 할 구성 요소의 높이를 얻기 위해 시도 할 수

var index:Number = dataGroup.getElementIndex(comp); 
var offset:Number = dataGroup.getElementAt(index).height; 
scroller.viewport.verticalScrollPosition = index * offset; 

dataGroupVGroup이고 comp은 스크롤하려는 데이터 격자입니다.

+0

안녕하세요. 답장을 보내 주셔서 감사합니다. 내가 제시 한 첫 번째 방법을 구현할 수 없었습니다. VBox에는 layout이라는 속성이 없습니다. 두 번째 방법은 vbox를 사용하여 스크롤러를 구현할 수 없다는 것을 언급했습니다. <: VBox의 아이디 = "VBox의"폭 = "100 %"높이 = "100 %"MX> \t \t \t을하지만 오류를 보여줍니다 <스크롤러 ID = "스크롤"S> I는 다음과 같이 썼습니다. 오류 메시지가 " 'mx.containers.VBox' 'spark.core.IViewport'유형의 'viewport'기본 속성에 할당 할 수 없습니다." 나는 VBox를 내 목적을 위해 VGroup으로 대체 할 수 없다. 답장을 보내 주셔서 감사합니다 :) – Tahlil