Skip to main content
Associate III
November 10, 2024
Question

Unexpected scroll wheel behavior

  • November 10, 2024
  • 4 replies
  • 1945 views

I have created a project with a scroll wheel of 10 items, each item is displaying a single digit 0-9. Imagine an odometer for instance.  I am incrementing a variable(num) every second and using
scrollWheel.animateToItem(num, 20);
to scroll through the list of items, it is working as expected until it gets to 9. Instead of it the scroll wheel continuing to rotate the same direction to 0 it reverses the direction of rotation and scroll past all other digits to get back to zero.  

I have verified I have the scroll wheel set as "Circular" and it does indeed display the scroll wheel correctly as if it was circular.  Can I somehow change this behavior?

4 replies

MM..1
Chief III
November 10, 2024

Try combine with 

virtual voidanimateToPosition(int32_t position, int16_t steps =-1)
Visitor II
November 10, 2024

You can use the modulus operator to calculate which item to display while keeping a continuous count for num so that the scroll wheel always has a “forward” motion.

 

let num = 0;
setInterval(() => {
 scrollWheel.animateToItem(num % 10, 20);
 num++; // Keep incrementing num indefinitely
}, 1000);

 

brohr01Author
Associate III
December 14, 2024

I want to revisit this issue with a better explanation and more details.

I have a circular scroll wheel with 10 elements, each element is displaying a single number 0-9.  If I set the scroll wheel in code by callingscrollwheel.animateToItem(9, 20); and then call  callingscrollwheel.animateToItem(0, 20); the wheel will animate from scrolling all digits from 9 down to zero.

But if I reverse the order of the calls, callingscrollwheel.animateToItem(0, 20); and then callingscrollwheel.animateToItem(9, 20); the scroll wheel acts as expected and will animate directly from 0 to 9.

This appears to be a bug to me as the circular scrollwheel is only behaving as a circular wheel in one direction where animating in this order 2, 1, 0, 9, 8...works as expected, and animating from 8, 9, 0, 1, 2 does not act like a circular wheel.

If I change the scrollwheel to not be circular if will always scroll through all digits when going from 0 to 9 and also when going 9 to 0.

MM..1
Chief III
December 14, 2024

You little miss idea. TGFX is TOUCH primary and circular here mean both direction work neverending...

Code control is other species.

CSharpino
Associate II
April 23, 2026

I have the same problem, did you find any solution?

MM..1
Chief III
April 23, 2026

If you use without touch try add 0 to end 0,1,2,3,4,5,6,7,8,9,0 and split scroll negative to scroll to item 11, switch to item 0 and scroll to target... Or complete twice 0-9 0-9 ...

CSharpino
Associate II
April 24, 2026

Yes, I don't have a touch screen and only use physical buttons. After replying to this post, however, I tried something "no sense" that seems to work, namely:

//UP 
int currentIndex = scrollWheel1.getSelectedItem();
scrollWheel1.animateToItem((currentIndex + 1), 5);

//DOWN
int currentIndex = scrollWheel1.getSelectedItem();
scrollWheel1.animateToItem((currentIndex - 1), 5);

 

I'm not interested in pushing the limits in either direction and "strangely" everything works without generating any graphical glitches.