Panel/InsertFade

From Garry's Mod
Jump to: navigation, search
 Panel:InsertFade( )

Contents

Description

Begins a text fade for a RichText element where the last appended text segment is fully faded out after a specific amount of time, at a specific speed.

The alpha of the text at any given time is determined by the text's base alpha * ((sustain - CurTime) / length) where CurTime is added to sustain when this method is called.

Arguments

number sustain

The number of seconds the text remains visible.

Arguments

number length

The number of seconds it takes the text to fade out.

If set lower than sustain, the text will not begin fading out until (sustain - length) seconds have passed.

If set higher than sustain, the text will begin fading out immediately at a fraction of the base alpha.

If set to -1, the text doesn't fade out.

Examples

Example

Creates a Rich Text panel that sustains visibility for 6 seconds with a 2 second long fade-out.

-- Create a window frame
TextFrame = vgui.Create("DFrame")
TextFrame:SetSize(200, 200)
TextFrame:Center()
TextFrame:SetTitle("Fading Text")
TextFrame:MakePopup()

-- RichText panel
local richtext = vgui.Create("RichText", TextFrame)
richtext:Dock(FILL)

-- Sample text
richtext:SetText("This is an example of a Rich Text panel using a fade-out with:\n\n6 seconds of sustain\n\n2 second fade-out length")
	
-- When the panel is ready for layout, begin the fade
function richtext:PerformLayout()
	
	self:SetFontInternal("Trebuchet18")
	self:SetBGColor(Color(64, 64, 92))
	
	-- Wait 6 seconds, then fade out in 2 seconds
	self:InsertFade(6, 2)
	
end

Output:

Some identical example outputs are shown below, only with different length values swapped in.

RichText InsertFade output1.gifRichText InsertFade output2.gifRichText InsertFade output3.gif

Examples

Example

Create a Rich Text panel where Dr. Kleiner reads a fading message in sync with text.

-- Create a window frame
TextFrame = vgui.Create("DFrame")
TextFrame:SetSize(350, 100)
TextFrame:Center()
TextFrame:SetTitle("Kleiner says:")
TextFrame:MakePopup()

-- RichText panel
local richtext = vgui.Create("RichText", TextFrame)
richtext:Dock(FILL)	

-- Red text
richtext:InsertColorChange(200, 60, 32, 255)
richtext:SetVerticalScrollbarEnabled(false)
	
local words = {"There's", "only", "one", "hedy..."}
local delay = 0

-- Display each word in half second interval
for w, txt in pairs(words) do

	if(w == 1) then delay = 0.2
	else delay = (w-1)*0.45 end

	timer.Simple(delay, function()
	
		richtext:AppendText(txt.." ")
		richtext:InsertFade(2, 1)	-- Sustain for 2 seconds while fading out after 1 second
		
		richtext:SetBGColor(Color(0, 0, 0))
		richtext:SetFontInternal("DermaLarge")
	
	end)

end

-- Kleiner read along
LocalPlayer():EmitSound("vo/k_lab2/kl_onehedy.wav")

Output:



RichText InsertFade example2.gif
Personal tools
Navigation