You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: 7-animation/3-js-animation/article.md
+19-19
Original file line number
Diff line number
Diff line change
@@ -8,7 +8,7 @@ Por exemplo, movimentação por um caminho complexo, com uma função de tempo d
8
8
9
9
A animação pode ser implementada como uma sequência de frames (quadros) -- geralmente pequenas modificações nas propriedades de HTML/CSS.
10
10
11
-
Por exemplo, modificando `style.left` de `0px` para `100px`movimenta o elemento. E se aumentarmos em `setInterval`, mudando por `2px` com um pequeno atraso, como 50 vezes por segundo, parecerá suave. Este é o mesmo princípio do cinema: 24 quadros por segundo é o suficiente para fazer com que pareça suave.
11
+
Por exemplo, modificando `style.left` de `0px` para `100px`move o elemento. E se aumentarmos em `setInterval`, mudando por `2px` com um pequeno atraso, como 50 vezes por segundo, parecerá suave. Este é o mesmo princípio do cinema: 24 quadros por segundo é o suficiente para fazer com que pareça suave.
12
12
13
13
O pseudo-código pode ficar assim:
14
14
@@ -61,18 +61,18 @@ Em outras palavras, isso:
61
61
62
62
```js
63
63
setInterval(function () {
64
-
animate1()
65
-
animate2()
66
-
animate3()
64
+
animate1();
65
+
animate2();
66
+
animate3();
67
67
}, 20)
68
68
```
69
69
70
70
...É mais leve que três referências independentes:
setInterval(animate2, 20);// em diferentes lugares do script
75
+
setInterval(animate3, 20);
76
76
```
77
77
78
78
Esses diferentes redesenhos deveriam ser agrupados juntos, para fazer com o que o redesenho seja mais fácil para o navegador (e, portanto, mais suave para as pessoas).
@@ -82,7 +82,6 @@ Tem mais uma coisa a ser manter em mente. Às vezes, quando a CPU está sobrecar
82
82
Mas como sabemos disso em JavaScript? Existe uma especificação [Tempo de animação](http://www.w3.org/TR/animation-timing/) que fornece a função `requestAnimationFrame`. Ela aborda todos esses problemas e mais.
83
83
84
84
A sintaxe:
85
-
86
85
```js
87
86
let requestId =requestAnimationFrame(callback)
88
87
```
@@ -92,7 +91,6 @@ Isso agenda a função `callback` para ser executado no momento mais próximo qu
92
91
Se modificarmos os elementos na `callback`, então eles serão agrupados juntos com outras `requestAnimationFrame` callbacks e com animações em CSS. Então haverá apenas um recálculo geométrico e repintura ao invés de várias.
93
92
94
93
O valor retornado `requesId` pode ser utilizado para cancelar a chamada:
95
-
96
94
```js
97
95
// cancela a execução agendada da callback
98
96
cancelAnimationFrame(requestId)
@@ -110,7 +108,7 @@ O código abaixo mostra o tempo entre as 10 primeiras chamadas de `requestAnimat
Como podemos ver, o gráfico da primeira metade da animação é a reduzida `easeIn`, e a segunda metade é a reduzida `easeOut`. Como resultado, a animação começa e termina com o mesmo efeito.
405
405
@@ -417,10 +417,10 @@ Para animação que CSS não lida bem, ou aquelas que precisam de controle rígi
417
417
418
418
Quando uma página está em segundo plano, não ocorrem repinturas, então a callback não será executada: a animação será suspensa e não consumirá recursos. Isso é ótimo.
419
419
420
-
Aqui está a função helper `animate` para configura a maioria das animações:
420
+
Aqui está uma função de ajuda `animate` para configurar a maioria das animações:
0 commit comments