I want to make a moduleScript that tweens every button in the game (mouseEnter, mouseLeave, etc)
The problem is that if I hover over the buttons too quick, then they will scale down because the mouseEnter event hasn’t finished yet (it hasn’t reached the x1.1 goal) and I already divide the scale of the button by 1.1
I know that you don’t need to divide it by 1.1, but rather scale it to the default size, I just can’t figure out on how to do it in a module script
The video below shows what I’m talking about:
Here is the script:
local tweens = {}
local TS = game:GetService("TweenService")
local hoverModifier = 1.1
local tableOfEasings = {
Enum.EasingStyle.Linear, -- 1 --
Enum.EasingStyle.Sine, -- 2 --
Enum.EasingStyle.Back, -- 3 --
Enum.EasingStyle.Quad, -- 4 --
Enum.EasingStyle.Quart, -- 5 --
Enum.EasingStyle.Quint, -- 6 --
Enum.EasingStyle.Bounce, -- 7 --
Enum.EasingStyle.Elastic, -- 8 --
Enum.EasingStyle.Exponential, -- 9 --
Enum.EasingStyle.Circular, -- 10 --
Enum.EasingStyle.Cubic -- 11 --
}
function tweens.Hover(plr)
local allButtons = plr.PlayerGui:WaitForChild("ScreenGui"):GetChildren()
for _, button in pairs(allButtons) do
if button:IsA("TextButton") then
button.MouseEnter:Connect(function()
local goalHover = {}
goalHover.Size = UDim2.new(button.Size.X.Scale * hoverModifier, 0, button.Size.Y.Scale * hoverModifier, 0)
local TI = TweenInfo.new(0.1, tableOfEasings[6], Enum.EasingDirection.Out, 0, false)
local tween = TS:Create(button, TI, goalHover)
tween:Play()
end)
end
end
end
function tweens.Leave(plr)
local allButtons = plr.PlayerGui:WaitForChild("ScreenGui"):GetChildren()
for _, button in pairs(allButtons) do
if button:IsA("TextButton") then
button.MouseLeave:Connect(function()
local goalHover = {}
goalHover.Size = UDim2.new(button.Size.X.Scale / hoverModifier, 0, button.Size.Y.Scale / hoverModifier, 0)
local TI = TweenInfo.new(0.1, tableOfEasings[6], Enum.EasingDirection.Out, 0, false)
local tween = TS:Create(button, TI, goalHover)
tween:Play()
end)
end
end
end
return tweens