Scroller - A dumb scrolling substitute that I made in 6 hours and 2 cans of coke

The drink.

Heyo, It’s me again. The person that’s notoriously (not-really) known for making useless ModuleScripts since I have an abundance of free time and an apparent need, or perhaps a want, to create something that can help people help themselves.

This time, it’s not in 3D space, but in fact, it’s in 2D space. There’s likely better alternatives to what I made as it could likely be optimized, so that’s something. If you can make use of it, that’d be really awesome though. There might be some bugs as I haven’t done any extensive bug testing on it, so it’d also be neat if you could shoot some bug reports my way in DMs (just to avoid cluttering the main topic), that’s all.

Now, let’s get to the meat (or… impossible meat?) of the post:

Features


  • Fast.. I think..?

  • Resilient. Most errors are hand-made, crafted with love and care and also hatred for the people that can’t read the documentation.

  • Sick documentation. Seriously. It’s so beautiful and over-the-top that it’d make you cry. Probably.

  • Easy to understand. As in, I purposefully made the source easy to understand. Everything is verbose and clear-cut, with no room for obscurity. Excluding the math. And also the unpacks. Other than that, it’s pretty neat.

  • BLOAT BEGONE. Every method has a clear use. Enough of those stupid methods that are primarily there just to make the module look pretty. Cutting right to the chase is this module’s job.

  • An actually good RBXScriptSignal field, called ScrollerObject.Adorned, which fires whenever ScrollerObject:Adorn() is called, whether internally or externally. This is done by storing a BindableEvent’s Event reference within the __metatable metafield. Not a good way to do it, but it works :stuck_out_tongue:

  • Overflow prevention. When adorned, an object of which their size in Y would make the total size of the container exceed the boundaries will be re-pooled and sent back to the shadow realm and end the loop. Otherwise, it’ll sit snugly inside of your container.

  • Did I mention the SICK documentation? Seriously. It’s sick.


The documentation is sick.

Seriously. Go check it out.


FAQ

…actually, none of these questions have been asked before, so… make that UFAQ.

Q: What can it be used for?
A: Yes.

Q: Can I see the documentation?

A: Here's a peek.

Q: Are you just using this as a method to bloat up the word count on your Topic?
A: I can neither confirm nor deny that theory. Although it is probably right.

Q: Why is GetPercentage so oddly estimated?
A: I spent an hour or so trying to nail GetPercentage, but there’s a persistent issue, being that the top would always, at least, be 40% off within a Pool size range of (0, 10]. After many multiples of 15 minutes passing, I took the easy way out and implemented a check to where if Pool index 1 is visible, it would return 0, and if Pool index m, being the size of the Pool, was visible, then it would return 1. Anything else would depend on the bottom-most visible frame. If someone could conjure up a way for GetPercentage to be accurate, I’d pay you a grand total of 0 robux, because I’m poor.

Q: What’s next in the Noire’s Dumb Adventures list?
A: It’d probably be a documentation creator. Would be super hard to format, but would also be super awesome to pull off. Would also be something that could ultra-benifit free-use open-source creators on this platform. Win-win situation, I make people happy, people can make things quickly and much easier than before.

Q: Will you post the source to this?
A: No. I don’t wish to have my posts bloated up with things that I feel that shouldn’t be a part of the main Topic. Someone else can post the Source in the replies if wanted, but I don’t plan to openly disclose the source through the DevForum through my own volition. This could potentially expand to Github depending on my laziness, but even I believe that something like that wouldn’t happen. Probably.

Q: What was the main reason for creating this?
A: ScrollingFrames are insufficient, and that’s just about it. You can’t have rotated clipdescendants still (after almost like, half a decade or so), and things overflow like it’s nothing. CanvasSize stretches all the contents, making automatically resizing ScrollingFrames near impossible to make. Thus, I just wanted to create something that would ease the pain and hopefully gravitate me to someplace away from ScrollingFrames and possibly to a better alternative. Boatbomber, I’m counting on you. :Q

I guess another reason could be that I wanted to replicate Persona 5’s lists, as I am working on a Persona 5 project. But nothing more than those two, I’d bet. I just felt like publically releasing this on a whim.

Q: What makes this different from the other scrolling-assist modules?
A: Absolutely nothing. As a matter of fact, it might actually be worse. I don’t know, I’ve never used a scrolling assist module. Can you tell that I have absolutely no self-confidence? I know I can.


Place File with Example

scroller_test.rbxl (30.9 KB)

Toolbox Link

https://www.roblox.com/library/5592295772/Scroller

No pics, no clicks. I understand. Smile.

General scrolling implementation + Scroll bar via :GetPercentage().

Exhibition of overflow culling with frames of various sizes.

In production:

More can be done with your own hands and your brain. And also creativity.

That is all. Have a good day.

18 Likes

very cool fifkee, you bet im gonna be using this :sunglasses:

2 Likes

Sick documentation bro, love it

3 Likes

Hi there~ @Fifkee

Thank you for sharing your creation with us, this is very interesting stuff.

Would you kindly create a link to Source code (preferably Github and/or Pastebin) for people who want to read the source but don’t have any access to a PC or maybe want to contribute to the source

2 Likes

tl;dr - Don’t plan to. Someone else can post the source in the replies if they wish. If I change my mind, you’ll see an edit to the post with a huge github header on it. Cheers.

1 Like