VScrollBarでスクロール量を指定したい。Flex 3 には「lineScrollSize」がありますが、このプロパティは Flex 4 ではどのように呼び出されたのでしょうか? VScrollBar.stepSize だと思っていましたが、何もしません。
誰か助けてください。マウスホイールでコンテンツをより速くスクロールしたいだけです。
VScrollBarでスクロール量を指定したい。Flex 3 には「lineScrollSize」がありますが、このプロパティは Flex 4 ではどのように呼び出されたのでしょうか? VScrollBar.stepSize だと思っていましたが、何もしません。
誰か助けてください。マウスホイールでコンテンツをより速くスクロールしたいだけです。
をご覧くださいLayoutBase.getVerticalScrollPositionDelta
。サブクラス化してオーバーライドすることもできます。
独自のレイアウトクラスで行ったことは次のとおりです。
override public function getVerticalScrollPositionDelta(navigationUnit:uint):Number {
var n:Number=super.getVerticalScrollPositionDelta(navigationUnit);
if (navigationUnit==NavigationUnit.DOWN || navigationUnit==NavigationUnit.UP) return 10*n;
return n;
}
ここには、mouseWheel スクロールの stepSize を増やす方法の例があります: http://forums.adobe.com/message/2783736
この機能強化により、マウスホイールのスクロールを少し簡単にキャンセルできるはずです: http://bugs.adobe.com/jira/browse/SDK-26432
そのバグにリンクされているサブタスクには、マウス ホイールのスクロールを防ぎ、代わりにズーム ロジックを呼び出すように変更できる単純なコード サンプルがあります。
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark">
<fx:Script>
<![CDATA[
...
private function mouseWheelChangingHandler(event:FlexMouseEvent):void {
// don't scroll by preventing default
event.preventDefault();
// instead zoom
yourZoomFunction(event.delta);
}
]]>
</fx:Script>
<s:Scroller id="scroller" width="250" height="200" mouseWheelChanging="mouseWheelChangingHandler(event)">
<s:DataGroup id="vp" dataProvider="{getDP()}" itemRenderer="spark.skins.spark.DefaultItemRenderer">
<s:layout>
<s:VerticalLayout gap="0" horizontalAlign="justify" />
</s:layout>
</s:DataGroup>
</s:Scroller>
</s:Application>
このスレッドでの議論も役に立つかもしれません: http://forums.adobe.com/message/3393852#3393852
スクロールバーのスキンをサブクラス化/拡張する必要がある回避策を思いつきました。
このようにして、スクローラー内の各ビューポートを変更するのではなく、カスタムスクローラーを使用するだけで済みます
Flex SDK のバグに関するコメントに記載しましたが、そもそも無視すべきではなかったことは明らかです。