基本上標題說的是什麼。我檢查了DataGridSkin,它有一個Scroller外觀部分,但我找不到滾動數量的任何屬性。我可能錯過了它。 任何人都可以在這個問題上幫助我嗎?謝謝。使用鼠標滾輪時更改火花DataGrid的滾動量
回答
我找到了解決辦法:我用上述的想法,但不是創建一個擴展VScrollBar類,我添加了一個MouseWheelChanging事件監聽器在滾輪皮膚的滾動條:
<fx:Component id="verticalScrollBarFactory">
<s:VScrollBar visible="false" mouseWheelChanging="outerDocument.vScrollBarWheelChanging(event)"/>
</fx:Component>
internal function vScrollBarWheelChanging(event:MouseEvent):void
{ event.delta/=Math.abs(event.delta); }
你可以將event.delta
設置爲所需的滾動量。
只是對鼠標滾輪步進的一些想法。計算機上的鼠標設置控制鼠標滾輪的「步」。對於已經調整此值的用戶,他們將獲得與您在測試中發現的不同的體驗。因此,您調整後的滾動「正確感覺」對其他用戶可能仍然不同。 – chrsmrtn
謝謝,我們有一個負責測試此類案例的QA部門。 – user940016
我建議如下。您可以在mouseWheelHandler
方法中的VScrollBar
類中找到部分滾動邏輯。
var nSteps:uint = Math.abs(delta);
...
for (var vStep:int = 0; vStep < nSteps; vStep++)
{
var vspDelta:Number = vp.getVerticalScrollPositionDelta(navigationUnit);
...
在我的情況delta
等於3
。網格滾動3個渲染高度。您可以擴展VScrollBar類。然後創建自定義ScrollerSkin(從原始複製),並設置垂直欄,而不是默認的。然後創建自定義DataGrid
皮膚(再次從原始皮膚複製)並在那裏設置您的自定義滾動皮膚Scroller
。
在自定義VScrollBar類中覆蓋mouseWheelHandler
方法。示例:
package {
import flash.events.Event;
import flash.events.MouseEvent;
import mx.core.IInvalidating;
import mx.core.mx_internal;
import mx.events.FlexMouseEvent;
import spark.components.VScrollBar;
import spark.core.IViewport;
import spark.core.NavigationUnit;
import spark.utils.MouseEventUtil;
use namespace mx_internal;
public class MyVScrollBar extends VScrollBar {
public function MyVScrollBar() {
}
override mx_internal function mouseWheelHandler(event:MouseEvent):void {
const vp:IViewport = viewport;
if (event.isDefaultPrevented() || !vp || !vp.visible || !visible)
return;
var changingEvent:FlexMouseEvent = MouseEventUtil.createMouseWheelChangingEvent(event);
if (!dispatchEvent(changingEvent))
{
event.preventDefault();
return;
}
const delta:int = changingEvent.delta;
var nSteps:uint = 1; //number of renderers scrolled!
var navigationUnit:uint;
var scrollPositionChanged:Boolean;
navigationUnit = (delta < 0) ? NavigationUnit.DOWN : NavigationUnit.UP;
for (var vStep:int = 0; vStep < nSteps; vStep++)
{
var vspDelta:Number = vp.getVerticalScrollPositionDelta(navigationUnit);
if (!isNaN(vspDelta))
{
vp.verticalScrollPosition += vspDelta;
scrollPositionChanged = true;
if (vp is IInvalidating)
IInvalidating(vp).validateNow();
}
}
if (scrollPositionChanged)
dispatchEvent(new Event(Event.CHANGE));
event.preventDefault();
}
}
}
將nSteps
設置爲您要滾動的渲染器數量。所以在這個例子中,網格僅由滾輪上的一個項目滾動。
對不起,您的解決方案給了我:非法覆蓋mouseWheelHandler – user940016
您使用的是哪個版本的SDK?請分享你的班級代碼http://pastebin.com/ –
我改變了你的解決方案,這解決了我的問題。看到我添加的答案。謝謝你給我正確的方向。 – user940016
- 1. 使用滾動條和鼠標滾輪更流暢地滾動
- 2. 使用鼠標滾輪添加滾動
- 3. Popup - 滾動鼠標滾輪
- 4. 鼠標滾輪時更改圖像
- 5. 更換鼠標滾輪滾動條?
- 6. 如何在asp.net中滾動鼠標滾輪時更改記錄
- 7. 用於鼠標滾輪更改的默認滾動偏移
- 8. 滾動面板鼠標滾輪滾動
- 9. 使用鼠標滾輪和鼠標移動滾動
- 10. 更改行數WPF中的鼠標滾輪滾動列表框
- 11. 使用鼠標滾輪時,控制會自動滾動回來
- 12. 在拖動時使用鼠標滾輪滾動dnd
- 13. 火狐+ jQuery的鼠標滾輪滾動事件錯誤
- 14. 的Flex星火列表鼠標滾輪滾動速度
- 15. WPF - 使用鼠標滾輪滾動使用自定義擴展器凍結DataGrid
- 16. 鼠標滾輪的滾動操作
- 17. 鼠標滾輪滾動火只有一次下一個回調
- 18. 改變形象,同時滾動鼠標滾輪
- 19. 嵌套在另一個DataGrid的RowDetailsTemplate中的Datagrid中斷鼠標滾輪滾動
- 20. 視差滾動 - 使用鼠標滾輪時跳轉
- 21. 使用鼠標滾輪移動圖像
- 22. 滾輪滾動 - 滾動更改圖片
- 23. 鼠標滾輪滾動DIV元件
- 24. 鼠標滾輪滾動水平
- 25. jquery水平滾動鼠標滾輪
- 26. ScrolledComposite不滾動鼠標滾輪
- 27. iScroll 4水平鼠標滾輪滾動
- 28. 鼠標滾輪平滑滾動
- 29. 平滑滾動鼠標滾輪?
- 30. RichTextBox不滾動鼠標滾輪
爲什麼這個問題突然被拒絕?這是一個編程問題,我已經找到併發布了答案。怎麼了? – user940016