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
+21-21Lines changed: 21 additions & 21 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -14,8 +14,8 @@ O pseudo-código pode ficar assim:
14
14
15
15
```js
16
16
let timer =setInterval(function() {
17
-
if (animation complete) clearInterval(timer);
18
-
elseincreasestyle.leftby2px
17
+
if (animação completa) clearInterval(timer);
18
+
elseincrementestyle.leftem2px
19
19
}, 20); //aumenta 2px a cada 20ms, em média 50 quadros por segundo
20
20
```
21
21
@@ -38,8 +38,8 @@ let timer = setInterval(function() {
38
38
39
39
}, 20);
40
40
41
-
// timePassed vai de 0 a 2000
42
-
// recebe valores de 0 a 400px
41
+
//enquanto timePassed vai de 0 a 2000
42
+
//'left' recebe valores de 0 a 400px
43
43
functiondraw(timePassed) {
44
44
train.style.left= timePassed /5+'px';
45
45
}
@@ -75,9 +75,9 @@ setInterval(animate2, 20); // em diferentes lugares do script
75
75
setInterval(animate3, 20);
76
76
```
77
77
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).
78
+
Esses diferentes redesenhos deveriam ser agrupados juntos, para fazer com o que o redesenho seja mais fácil para o navegador e, portanto, menos carga sobre a CPU e mais suave para as pessoas.
79
79
80
-
Tem mais uma coisa a ser manter em mente. Às vezes, quando a CPU está sobrecarregada, ou quando existem outras reazões para resesenhar com menos frequência (como quando a aba do navegador está escondida), então não devemos executá-la a cada `20ms`.
80
+
Tem mais uma coisa a se manter em mente. Às vezes, quando a CPU está sobrecarregada, ou quando existem outras reazões para resesenhar com menos frequência (como quando a aba do navegador não está visível), então não devemos executá-la a cada `20ms`.
81
81
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
@@ -149,7 +149,7 @@ Função `animate` aceita 3 parâmetros que essencialmente descrevem a animaçã
149
149
: Tempo total da animação. Exemplo, `1000`.
150
150
151
151
`timing(timeFraction)`
152
-
: Função de tempo, como a propriedade CSS `transition-timing-function` que recebe a fração de tempo percorrido (`0` no início, `1` no final) e retorna a conclusão da animação (como `y` na curva de Bezier).
152
+
: Função de tempo, tal como a propriedade CSS `transition-timing-function` que recebe a fração de tempo percorrido (`0` no início, `1` no final) e retorna a conclusão da animação (como `y` na curva de Bezier).
153
153
154
154
Por exemplo, uma função linear significa que a animação continue uniformemente com a mesma velocidade:
155
155
@@ -227,7 +227,7 @@ Veja em ação (clique para ativar):
227
227
228
228
[iframe height=40 src="quad" link]
229
229
230
-
...Ou a curva cúbica ou evento maior que `n`. Aumentar a potência faz com que acelere mais rapidamente.
230
+
...Ou a curva cúbica ou até um `n` maior. Aumentar a potência faz com que acelere mais rapidamente.
231
231
232
232
Aqui está o gráfico para `progress` na potência `5`:
233
233
@@ -312,7 +312,7 @@ Em ação para `x=1.5`:
312
312
313
313
[iframe height=40 src="elastic" link]
314
314
315
-
## Reversão: ease\*
315
+
## Reversão: ease*
316
316
317
317
Então temos uma coleção de funções de tempo. Sua aplicação direta é chamada "easeIn".
318
318
@@ -326,7 +326,7 @@ No modo de "eastOut", a função `timing` é envoltada pela `timingEaseOut`:
Em outras palavras, temos uma função de "transformar" `makeEaseOut` que recebe a função de tempo "regular" e retorna a função que a envolve:
329
+
Em outras palavras, temos uma função "transformar" `makeEaseOut` que recebe a função de tempo "regular" e retorna a função que a envolve:
330
330
331
331
```js
332
332
// aceita a função de tempo, returna a variante transformada
@@ -353,16 +353,16 @@ Aqui podemos ver como a transformação muda o comportamento da função:
353
353
354
354
Se existe um efeito de animação no início, como quique -- será mostrado no final.
355
355
356
-
No gráfico acima, <spanstyle="color:#EE6B47">quique regular</span> tem a cor vermelha, e <spanstyle="color:#62C0DC">quique easeOut</span> é azul.
356
+
No gráfico acima, o <spanstyle="color:#EE6B47">quique regular</span> tem a cor vermelha, e o <spanstyle="color:#62C0DC">quique easeOut</span> é azul.
357
357
358
358
- Quique regular -- o objeto salta na parte inferior, e no final pula abruptamente para o topo.
359
-
- Depois `easeOut` -- ele pula no começo, depois quica naquele lugar.
359
+
- Depois de `easeOut` -- ele primeiro pula para o topo, e depois quica naquele lugar.
360
360
361
361
### easeInOut
362
362
363
363
Podemos também mostrar o efeito tanto no começo quanto no final da animação. A transformação é chamada "easeInOut".
364
364
365
-
Dado a função de tempo, calculamos o estado de animação assim:
365
+
Dada a função de tempo, calculamos o estado de animação assim:
366
366
367
367
```js
368
368
if (timeFraction <=0.5) { // primeira metade da animação
@@ -372,7 +372,7 @@ if (timeFraction <= 0.5) { // primeira metade da animação
372
372
}
373
373
```
374
374
375
-
O código do wrapper:
375
+
O código da envolvente:
376
376
377
377
```js
378
378
functionmakeEaseInOut(timing) {
@@ -393,27 +393,27 @@ Em ação, `bounceEaseInOut`:
393
393
394
394
A transformaçào "easeInOut" une dois gráficos em um: `easeIn` (regular) para a primeira metade da animação e `easeOut` (invertida) -- para a segunda parte.
395
395
396
-
O efeito é claramente visto se compararmos os gráficos de `easeIn`, `easeOut` e `easeInOut` da função `circ`:
396
+
O efeito é claramente visto se compararmos os gráficos de `easeIn`, `easeOut` e `easeInOut` da função de tempo `circ`:
397
397
398
398

399
399
400
-
- <spanstyle="color:#EE6B47">Red</span> é a variante regular de `circ` (`easeIn`).
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
406
406
## "Desenho" mais interessante
407
407
408
408
Ao invés de mover o elemento, podemos fazer outra coisa. Tudo o que precisamos é escrever a `draw` apropriada.
409
409
410
-
Aqui está o texto animato "quicando":
410
+
Aqui está o texto animado "quicando":
411
411
412
412
[codetabs src="text"]
413
413
414
414
## Resumo
415
415
416
-
Para animação que CSS não lida bem, ou aquelas que precisam de controle rígido, JavaScript pode ajudar. Animações JavaScript devem ser implementadas via `requestAnimationFrame`. Esse método embutido permite configurar uma callback para que seja executada quando o navegador estiver preparando uma repintura. Geralmente é bem breve, mas o tempo exato depende do navegador.
416
+
Para animação que CSS não lida bem, ou aquelas que precisam de controle rígido, JavaScript pode ajudar. Animações com JavaScript devem ser implementadas via `requestAnimationFrame`. Esse método embutido permite configurar uma callback para que seja executada quando o navegador estiver preparando uma repintura. Geralmente é bem breve, mas o tempo exato depende do navegador.
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
@@ -449,6 +449,6 @@ Opções:
449
449
450
450
Certamente poderíamos melhorá-las, adicionar mais recursos adicionais supérfluos, mas animações JavaScript não são aplicadas no dia-a-dia. Elas são usadas para fazer coisas mais interessantes e não-padrão. Então você gostaria de adicionar novas funcionalidades quando precisa delas.
451
451
452
-
Animações JavaScript podem usar qualquer função de tempo. Cobrimos muitos exemplos e transformações para fazê-las ainda mais versáteis. Ao contrário de CSS, não estamos limitados às curvas de Bezier.
452
+
Animações com JavaScript podem usar qualquer função de tempo. Cobrimos muitos exemplos e transformações para fazê-las ainda mais versáteis. Ao contrário de CSS, não estamos limitados às curvas de Bezier.
453
453
454
454
É o mesmo com `draw`: podemos animar qualquer coisa, não só propriedades CSS.
0 commit comments