If you decide to use a VScrollBar or HScrollBar directly, you'll notice that the scroll thumb is always tiny, no matter the amount of scrolling that is available. The root of the problem is that the ScrollThumb class has an explicitMinHeight of 10, but the way to change that is not very straightforward. Here's the easiest solution I found:

So, we're extending the VScrollBar, and using the weird mx_internal namespace to access its scrollThumb property, which is an instance of ScrollThumb class. Now it's just a matter of setting explicitMinHeight whenever one of the scroll properties is changed. I only show pageSize, but the other properties in setScrollProperties() should also be overridden.

This gives you a larger thumb, which is nice, but we can do better. A dynamically-sized thumb is simply as big as the scrollbar itself minus the scrollable ammount, and if we add a simple Math.max() to prevent the thumb from getting too tiny (again), we're set! Change the last function to this: