1

組み込みのスクロールバー コンポーネントをフラッシュでカスタマイズしようとしています。具体的には、スクロールバーのつまみをカスタマイズして、高さと幅を固定する必要があります。

これは私が今持っているものです。親指の高さは自動的に調整されます。親指の高さを修正する必要があります。

現在の状態

私が達成しようとしていること(固定高さの親指):

私が達成しようとしていること

Flash で親指のサイズを設定する方法についての指針をいただければ幸いです。

4

1 に答える 1

3

これを行う簡単な方法はありません。つまり、Flash CS6 ScrollBar はこの機能をサポートしていません。保護されたメソッドで更新されるつまみの高さfl.controls.ScrollBar:

    protected function updateThumb():void {
        var per:Number = _maxScrollPosition - _minScrollPosition + _pageSize;
        if (track.height <= 12 || _maxScrollPosition <= _minScrollPosition || (per == 0 || isNaN(per))) {
            thumb.height = 12;
            thumb.visible = false;
        } else {
            thumb.height = Math.max(13,_pageSize / per * track.height);
            thumb.y = track.y+(track.height-thumb.height)*((_scrollPosition-_minScrollPosition)/(_maxScrollPosition-_minScrollPosition));
            thumb.visible = enabled;
        }
    }

ご覧のとおりthumb.height、else ブロックの設定をスキップするフラグはありません。考えられる解決策ScrollPane、メソッドを拡張してオーバーライドし、 created の代わりにconfigUIカスタム CustomScrollPane (ScrollBar を拡張してメソッドをオーバーライドする) を追加することです。updateThumb_verticalScrollBar:ScrollBar

別の解決策として、元の fl ScrollPane クラスを、swf のメイン ApplicationDomain で同じ名前の fl.controls.ScrollPane を持つ独自のクラスに置き換えることができます。ただし、これを行うには、独自のクラスが fl の前にロードされるようにクラスのロードを整理する必要があります。つまり、すべてのクラスを外部の swfs で動的にロードする必要があります。

于 2013-01-24T10:38:42.840 に答える