我有一个VBox,它包含几个网格作为它的孩子。你必须滚动才能看到所有的网格。网格中有按钮。如果你按下任何一个按钮,它会通过从VBox中删除所有网格来显示该网格的子节点,并用该网格的子节点填充它。有一个后退按钮可以移除孩子并用之前的网格填充VBox。现在,当我按下后退按钮时,我想回到特定的网格,我点击它来查看它的孩子。如果它在滚动的底部,那么当我回来时,我将看到Grid而不是顶部Grid.But它总是显示我的顶部网格。我试过setFocus方法。但它不起作用。
我有一个画布作为根父母,一个Vbox作为它的孩子。 Vbox包含所有网格。如果按下Grid的按钮,那么Vbox将拥有我上面解释过的Grid的孩子们。网格的孩子也是一些网格。
请帮助解决这个问题。我很困在这里。在此先感谢:)
答案 0 :(得分:0)
setFocus()
方法仅激活组件而不滚动视口。为此,您可以使用
var spDelta:Point = dataGroup.layout.getScrollPositionDeltaToElement(index);
if (spDelta)
{
dataGroup.horizontalScrollPosition += spDelta.x;
dataGroup.verticalScrollPosition += spDelta.y;
}
dataGroup
可以是VGroup
。
如果这不起作用或不是您想要的,您可以尝试获取要查看的组件的高度并将滚动条移动到该高度
var index:Number = dataGroup.getElementIndex(comp);
var offset:Number = dataGroup.getElementAt(index).height;
scroller.viewport.verticalScrollPosition = index * offset;
dataGroup
VGroup
是comp
,而{{1}}是您要滚动到的数据网格。