デフォルトでは、HorizontalList コンポーネントの Horizontal ScrollBar は一番下になります。一番上になるように再配置する方法はありますか?
わかりやすくするために、scrollToIndex や horizontalScrollPosition などを使用してスクロール位置を移動するという意味ではなく、スクロールバー コンポーネントの実際の物理的な位置を移動するという意味です。
どんな提案でも大歓迎です!
デフォルトでは、HorizontalList コンポーネントの Horizontal ScrollBar は一番下になります。一番上になるように再配置する方法はありますか?
わかりやすくするために、scrollToIndex や horizontalScrollPosition などを使用してスクロール位置を移動するという意味ではなく、スクロールバー コンポーネントの実際の物理的な位置を移動するという意味です。
どんな提案でも大歓迎です!
以前も同じことをしなければなりませんでした。(いくつかのマスキング/ポジショニングの問題を処理するために) 基本クラスを掘り下げる必要がありましたが、これが私が思いついたものです:
package
{
    import flash.display.DisplayObject;
    import mx.controls.HorizontalList;
    import mx.core.EdgeMetrics;
    public class ReverseHList extends HorizontalList
    {
        override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
        {
            super.updateDisplayList(unscaledWidth, unscaledHeight);
            var w:Number = unscaledWidth;
            var h:Number = unscaledHeight;
            var vm:EdgeMetrics = viewMetrics;
            if (horizontalScrollBar && horizontalScrollBar.visible)
            {
                horizontalScrollBar.setActualSize(w - vm.left - vm.right,
                                                  horizontalScrollBar.minHeight);
                horizontalScrollBar.move(vm.left, vm.top);
                horizontalScrollBar.enabled = enabled;
            }
            var mask:DisplayObject = maskShape;
            var wd:Number = w - vm.left - vm.right;
            var ht:Number = h - vm.top - vm.bottom;
            mask.width = wd < 0 ? 0 : wd;
            mask.height = ht < 0 ? 0 : ht;
            mask.x = vm.left;
            mask.y = vm.top + vm.bottom;
        }
        override protected function adjustListContent(unscaledWidth:Number = -1,
                                       unscaledHeight:Number = -1):void
        {
            super.adjustListContent(unscaledWidth, unscaledHeight);
            var lcx:Number = viewMetrics.left + listContent.leftOffset;
            var lcy:Number = (viewMetrics.top + listContent.topOffset) + viewMetrics.bottom;
            listContent.move(lcx, lcy);
        }
    }
}