0

我有一个 VBox,其中包含几个 Grid 作为其子级。您必须滚动才能查看所有网格。网格中有按钮。如果您按下任何按钮,它会通过从 VBox 中删除所有 Grid 并用该 Grid 的子级填充它来显示该 Grid 的子级。有一个后退按钮可以移除子元素并用之前的网格填充 VBox。现在,当我按下后退按钮时,我想回到我单击的特定网格以查看它的子项。如果它在滚动的底部,那么当我回来时,我会看到那个网格而不是顶部网格。但它总是向我显示顶部网格。我尝试了 setFocus 方法。但它不起作用。

我有一个画布作为根父级,一个 Vbox 作为它的子级。Vbox 包含所有网格。如果你按下 Grid 的按钮,那么 Vbox 将拥有我上面解释过的那个 Grid 的孩子。Grid 的孩子也是一些 Grid。

请帮助解决这个问题。我很困在这里。提前致谢 :)

4

1 回答 1

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

于 2012-03-09T09:21:08.877 回答