<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.multitheftauto.com/wiki/PT-BR/Animate?action=history&amp;feed=atom</id>
	<title>PT-BR/Animate - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.multitheftauto.com/wiki/PT-BR/Animate?action=history&amp;feed=atom"/>
	<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=PT-BR/Animate&amp;action=history"/>
	<updated>2026-04-15T05:07:34Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.3</generator>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=PT-BR/Animate&amp;diff=71564&amp;oldid=prev</id>
		<title>Lettify: Translation to Portuguese (Brazil)</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=PT-BR/Animate&amp;diff=71564&amp;oldid=prev"/>
		<updated>2021-08-05T21:01:22Z</updated>

		<summary type="html">&lt;p&gt;Translation to Portuguese (Brazil)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Template:PT-BR/Função Útil}}&lt;br /&gt;
__NOTOC__&lt;br /&gt;
Esta função permite você usar o [[interpolateBetween]] sem um evento de renderização, facilitando assim o trabalho em seu resource.&lt;br /&gt;
==Sintaxe==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;int animate(int/float from, int/float to, string/int easing, int duration, function onChange [ , function onEnd ])&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Argumentos necessários===&lt;br /&gt;
&lt;br /&gt;
* '''from''': o valor inicial.&lt;br /&gt;
* '''to''': o valor final.&lt;br /&gt;
* '''easing''': a [[PT-BR/Easing|função de atenuação]] para usar para a animação, também é possível usar os números para a atenuação, ex.: &amp;quot;Linear&amp;quot; = 1, &amp;quot;InQuad&amp;quot; = 2, &amp;quot;OutQuad&amp;quot; = 3, ...&lt;br /&gt;
* '''duration''': a duração da animação.&lt;br /&gt;
* '''onChange''': a função que é executada quando o valor da animação é alterado.&lt;br /&gt;
&lt;br /&gt;
===Argumentos opcionais===&lt;br /&gt;
* '''onEnd''': a função que é executada quando a animação finaliza.&lt;br /&gt;
&lt;br /&gt;
===Retorno===&lt;br /&gt;
Retorna um [[PT-BR/Int|int]] que é o ID da animação criada, ou '''false''' se argumentos inválidos foram especificados.&lt;br /&gt;
&lt;br /&gt;
==Código-fonte==&lt;br /&gt;
&amp;lt;section name=&amp;quot;Code&amp;quot; class=&amp;quot;client&amp;quot; show=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local anims, builtins = {}, {&amp;quot;Linear&amp;quot;, &amp;quot;InQuad&amp;quot;, &amp;quot;OutQuad&amp;quot;, &amp;quot;InOutQuad&amp;quot;, &amp;quot;OutInQuad&amp;quot;, &amp;quot;InElastic&amp;quot;, &amp;quot;OutElastic&amp;quot;, &amp;quot;InOutElastic&amp;quot;, &amp;quot;OutInElastic&amp;quot;, &amp;quot;InBack&amp;quot;, &amp;quot;OutBack&amp;quot;, &amp;quot;InOutBack&amp;quot;, &amp;quot;OutInBack&amp;quot;, &amp;quot;InBounce&amp;quot;, &amp;quot;OutBounce&amp;quot;, &amp;quot;InOutBounce&amp;quot;, &amp;quot;OutInBounce&amp;quot;, &amp;quot;SineCurve&amp;quot;, &amp;quot;CosineCurve&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
function table.find(t, v)&lt;br /&gt;
	for k, a in ipairs(t) do&lt;br /&gt;
		if a == v then&lt;br /&gt;
			return k&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return false&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function animate(f, t, easing, duration, onChange, onEnd)&lt;br /&gt;
	assert(type(f) == &amp;quot;number&amp;quot;, &amp;quot;Bad argument @ 'animate' [expected number at argument 1, got &amp;quot;..type(f)..&amp;quot;]&amp;quot;)&lt;br /&gt;
	assert(type(t) == &amp;quot;number&amp;quot;, &amp;quot;Bad argument @ 'animate' [expected number at argument 2, got &amp;quot;..type(t)..&amp;quot;]&amp;quot;)&lt;br /&gt;
	assert(type(easing) == &amp;quot;string&amp;quot; or (type(easing) == &amp;quot;number&amp;quot; and (easing &amp;gt;= 1 or easing &amp;lt;= #builtins)), &amp;quot;Bad argument @ 'animate' [Invalid easing at argument 3]&amp;quot;)&lt;br /&gt;
	assert(type(duration) == &amp;quot;number&amp;quot;, &amp;quot;Bad argument @ 'animate' [expected number at argument 4, got &amp;quot;..type(duration)..&amp;quot;]&amp;quot;)&lt;br /&gt;
	assert(type(onChange) == &amp;quot;function&amp;quot;, &amp;quot;Bad argument @ 'animate' [expected function at argument 5, got &amp;quot;..type(onChange)..&amp;quot;]&amp;quot;)&lt;br /&gt;
	table.insert(anims, {from = f, to = t, easing = table.find(builtins, easing) and easing or builtins[easing], duration = duration, start = getTickCount( ), onChange = onChange, onEnd = onEnd})&lt;br /&gt;
	return #anims&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function destroyAnimation(a)&lt;br /&gt;
	if anims[a] then&lt;br /&gt;
		table.remove(anims, a)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
addEventHandler(&amp;quot;onClientRender&amp;quot;, root, function( )&lt;br /&gt;
	local now = getTickCount( )&lt;br /&gt;
	for k,v in ipairs(anims) do&lt;br /&gt;
		v.onChange(interpolateBetween(v.from, 0, 0, v.to, 0, 0, (now - v.start) / v.duration, v.easing))&lt;br /&gt;
		if now &amp;gt;= v.start+v.duration then&lt;br /&gt;
			if type(v.onEnd) == &amp;quot;function&amp;quot; then&lt;br /&gt;
				v.onEnd( )&lt;br /&gt;
			end&lt;br /&gt;
			table.remove(anims, k)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/section&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Exemplo==&lt;br /&gt;
&amp;lt;section name=&amp;quot;Example&amp;quot; class=&amp;quot;client&amp;quot; show=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
This example open/close with slide up/down effect.&lt;br /&gt;
Este exemplo abre/fecha a janela GUI com um efeito de slide subindo/descendo.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
--Animação de Slide&lt;br /&gt;
local sx, sy = guiGetScreenSize( )&lt;br /&gt;
local window = guiCreateWindow((sx-300)/2, (sy-400)/2, 300, 400, &amp;quot;Test&amp;quot;, false)&lt;br /&gt;
guiSetVisible(window, false)&lt;br /&gt;
bindKey(&amp;quot;f2&amp;quot;, &amp;quot;down&amp;quot;, function( )&lt;br /&gt;
    if anim then return end&lt;br /&gt;
    local v = guiGetVisible(window)&lt;br /&gt;
    if not v then &lt;br /&gt;
    	guiSetVisible(window, true)&lt;br /&gt;
    	animate(0, 1, 1, 1000, function(alpha)&lt;br /&gt;
    	    guiSetAlpha(window,alpha)&lt;br /&gt;
    	end)&lt;br /&gt;
    end&lt;br /&gt;
    anim = true&lt;br /&gt;
    animate(v and 400 or 0, v and 0 or 400, 2, 1250, function(height)&lt;br /&gt;
        if v and height == 0 then &lt;br /&gt;
            guiSetVisible(window, false)&lt;br /&gt;
            anim = false&lt;br /&gt;
        elseif not v and height == 400 then&lt;br /&gt;
            anim = false&lt;br /&gt;
        end&lt;br /&gt;
        local w, h = guiGetSize(window, false)&lt;br /&gt;
        guiSetSize(window, w, height, false)&lt;br /&gt;
    end)&lt;br /&gt;
end)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/section&amp;gt;&lt;br /&gt;
Author : Mr.Tn6eL&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
{{Useful_Functions}}&lt;br /&gt;
[[Category:Useful Functions]]&lt;br /&gt;
[[pl:Animate]]&lt;/div&gt;</summary>
		<author><name>Lettify</name></author>
	</entry>
</feed>