ScrollingFrames need a ScrollSpeed/ScrollSensitivity property

Here’s some more concise standalone code for anyone needing it:

local CustomScrollingIncrements = {
	-- [ScrollingFrame] = scrolling increment
	[script.Parent.ScrollingFrame] = 10,
	--[script.Parent.AnotherScrollingFrame] = 5
}

local ContextActionService = game:GetService("ContextActionService")
local UserInputService = game:GetService("UserInputService")
local MousedOver = {}

UserInputService.InputChanged:Connect(function(Input)
	if Input.UserInputType == Enum.UserInputType.MouseWheel then
		local Rotation: number = Input.Position.Z
		for ScrollingFrame,v in pairs(MousedOver) do
			ScrollingFrame.CanvasPosition += Vector2.new(0,CustomScrollingIncrements[ScrollingFrame]*Rotation*-1)
		end
	end
end)

for ScrollingFrame: ScrollingFrame, _ in pairs(CustomScrollingIncrements) do
	ScrollingFrame.MouseEnter:Connect(function()
		ScrollingFrame.ScrollingEnabled = false
		MousedOver[ScrollingFrame] = true
		ContextActionService:BindAction(
			"CustomScrollIncrement",
			function () 
				return Enum.ContextActionResult.Sink 
			end,
			false,
			Enum.UserInputType.MouseWheel
		)
	end)
	ScrollingFrame.MouseLeave:Connect(function()
		ScrollingFrame.ScrollingEnabled = true
		MousedOver[ScrollingFrame] = nil
		ContextActionService:UnbindAction("CustomScrollIncrement")
	end)
end

6 Likes