0

Flex 3 で TileList を使用して、1 行に 3 つの製品のリストを表示しています。問題は、3 行目がパネルに収まらず、下にスクロールすると 3 行ジャンプするため、半分表示されていた 3 行目が表示されないことです。スクロール速度を調整する方法はありますか? 関連する他の質問を検索しましたが、有効な回答が1つ見つかりましたが、同じ問題ではないと思います。

これが問題です: マウス ホイールによるリストのスクロール速度の変更

とにかく、これは私のタイルリストのコードです:

<mx:Panel id="homePage" width="75%" title="{resourceManager.getString('general','menubar_mostsold')}">
<mx:TileList id="list" dataProvider="{arrPro}"    itemRenderer="compIdea.view.Thumb" width="100%" height="100%"itemClick="product_selected(event)"/> 
</mx:Panel>

TileList はコンテナではなく、そのプロパティを持たないため、パネルの「verticalLineScrollSize」属性を調整しようとしました。クラス List を拡張し、mouseWheelHandler メソッドをオーバーライドする必要はありますか?

事前に感謝します。

4

2 に答える 2

2

私はこの問題を抱えていましたが、そのリンクも役に立ちませんでした。

これを試して

list.verticalScrollPosition+=(event.delta*-20);//you can experiment`                
event.stopPropagation();`
于 2014-05-19T12:00:23.213 に答える
0

@GiaGandi の助けのおかげで、スクロールの問題を解決できました。最初に eventListener を次のようにリストに追加します。

list.addEventListener(MouseEvent.MOUSE_WHEEL, scrollHandler, true);

そして、MouseEventを使用して関数を作成します。@GiaGandiが言ったことは正しいですが、-20を掛けることを除いて、スクロールが20倍速くなります。私がしたことは、MouseEventのDeltaを使用してスクロールアップまたはダウンしたかどうかを判断することでした.次に、リストのverticalScrollPositionを1だけ加算または減算します。リストのverticalScrollPositionは実際の行のインセットであるため、1を追加すると1行下になります。

そして、別の問題が発生しました。リストが物乞いまたは終了に達したときに、スクロールが停止せず、エラーが発生したため、リスト内の行数を上回っている場合は、verticalscrollposition が 0 を超えているかどうかを制御するだけです、通常のオブジェクトごとに 1 行では、dataProvider の長さになりますが、私の TileList には行ごとに 3 つのオブジェクトがあるため、3 で割ってから 2 を引くので、スクロールを停止すると 2 行が一番下に残ります。

public function scrollHandler(event:MouseEvent):void{
             if(event.delta < 0){
                 if(list.verticalScrollPosition < (arrPro.length / 3 - 2)){
                     list.verticalScrollPosition += 1;
                }
             }else{
                 if(list.verticalScrollPosition > 0){
                     list.verticalScrollPosition -= 1;
                 }
             }
            event.stopPropagation();
        }

これが将来誰かに役立つことを願っています.SOで他の解決策は見つかりませんでした. 助けてくれた@GiaGandiに感謝します!

G

于 2014-05-19T14:03:53.570 に答える