如何在flex 4中将焦点设置在Vbox的特定子节点上

时间:2012-03-08 10:18:15

标签: canvas flex4 scroll setfocus vbox

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

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

请帮助解决这个问题。我很困在这里。在此先感谢:)

1 个答案:

答案 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 VGroupcomp,而{{1}}是您要滚动到的数据网格。