0

いくつかのグリッドを子として含む VBox があります。すべてのグリッドを表示するには、スクロールする必要があります。グリッドにはボタンがあります。いずれかのボタンを押すと、VBox からすべてのグリッドを削除し、そのグリッドの子で埋めて、そのグリッドの子を表示します。子を削除し、VBox を前のグリッドで埋めるための戻るボタンがあります。戻るボタンを押すと、クリックした特定のグリッドに戻って子を確認したいと思います。スクロールの下部にある場合、戻ったときに、上部のグリッドではなくそのグリッドが表示されますが、常に上部のグリッドが表示されます。setFocus メソッドを試してみました。しかし、うまくいきません。

ルートの親としてキャンバスを持ち、その子として 1 つの Vbox を持っています。Vbox にはすべてのグリッドが含まれています。グリッドのボタンを押すと、Vbox は上で説明したグリッドの子を持ちます。グリッドの子もいくつかのグリッドです。

これを手伝ってください。私はここでかなり立ち往生しています。前もって感謝します :)

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にありVGroupcompはスクロール先のデータ グリッドです。

于 2012-03-09T09:21:08.877 に答える