So I ended up not being able to figure out how to insert my Scroll from blender because it has constraints that are needed for the animation and ended up just importing each frame. For some reason, even though it has a crossfade the Scroll is still semi-transparent and flickers.
if script.Parent.Parent.Parent.Parent == game.StarterGui then return end
local ReplicatedStoarge = game:GetService("ReplicatedStorage")
local TweenService = game:GetService("TweenService")
local scrollFrames = {
ReplicatedStoarge.Frames:WaitForChild("Frame2"),
ReplicatedStoarge.Frames:WaitForChild("Frame3"),
ReplicatedStoarge.Frames:WaitForChild("Frame4"),
ReplicatedStoarge.Frames:WaitForChild("Frame5"),
ReplicatedStoarge.Frames:WaitForChild("Frame6"),
ReplicatedStoarge.Frames:WaitForChild("Frame7"),
ReplicatedStoarge.Frames:WaitForChild("Frame8"),
ReplicatedStoarge.Frames:WaitForChild("Frame9"),
ReplicatedStoarge.Frames:WaitForChild("Frame10"),
ReplicatedStoarge.Frames:WaitForChild("Frame11"),
ReplicatedStoarge.Frames:WaitForChild("Frame12"),
ReplicatedStoarge.Frames:WaitForChild("Frame13"),
ReplicatedStoarge.Frames:WaitForChild("Frame14"),
ReplicatedStoarge.Frames:WaitForChild("Frame15"),
ReplicatedStoarge.Frames:WaitForChild("Frame16"),
ReplicatedStoarge.Frames:WaitForChild("Frame17"),
ReplicatedStoarge.Frames:WaitForChild("Frame18"),
ReplicatedStoarge.Frames:WaitForChild("Frame19"),
ReplicatedStoarge.Frames:WaitForChild("Frame20")
}
local blackListed = {
"Frame1",
}
local viewPort = script.Parent
local frameDelay: number = 0.1
task.wait(3.5)
for index = 1, 19 do
local framePrevious: Model = nil
for _, frame in ipairs(script.Parent:GetChildren()) do
if frame:GetAttribute("Blacklisted") ~= index - 1 then continue end
framePrevious = frame
break
end
local frameClone: Model = scrollFrames[index]:Clone()
frameClone:ScaleTo(2)
frameClone:PivotTo(framePrevious.WorldPivot)
frameClone:SetAttribute("Blacklisted", index)
for _, part in ipairs(frameClone:GetDescendants()) do
if not part:IsA("BasePart") then continue end
TweenService:Create(part, TweenInfo.new(0.1, Enum.EasingStyle.Linear), {
Transparency = 0
}):Play()
end
frameClone.Parent = script.Parent
for _, part in ipairs(framePrevious:GetDescendants()) do
if not part:IsA("BasePart") then continue end
TweenService:Create(part, TweenInfo.new(0.1, Enum.EasingStyle.Linear), {
Transparency = 1
}):Play()
end
task.spawn(
function()
task.wait(0.1)
framePrevious:Destroy()
end
)
task.wait(0.1)
end
-- finds previous
-- clones new
-- fades previous
-- destroys previous
-- iterate