Skip to content

Commit 0c25396

Browse files
committed
addresses pr feedback
1 parent 66086ae commit 0c25396

File tree

1 file changed

+51
-51
lines changed

1 file changed

+51
-51
lines changed

7-animation/3-js-animation/article.md

Lines changed: 51 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ Por exemplo, movimentação por um caminho complexo, com uma função de tempo d
66

77
## Utilizando setInterval
88

9-
A animação pode ser implmentada como uma sequência de frames (quadros) -- geralmente pequenas modificações nas propriedades de HTML/CSS.
9+
A animação pode ser implementada como uma sequência de frames (quadros) -- geralmente pequenas modificações nas propriedades de HTML/CSS.
1010

1111
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.
1212

@@ -22,25 +22,26 @@ let timer = setInterval(function() {
2222
Exemplo mais completo da animação:
2323

2424
```js
25-
let start = Date.now() // preservar o tempo inicial
25+
let start = Date.now(); // preservar o tempo inicial
2626

27-
let timer = setInterval(function () {
27+
let timer = setInterval(function() {
2828
// quanto tempo passou desde o início?
29-
let timePassed = Date.now() - start
29+
let timePassed = Date.now() - start;
3030

31-
if (tempoPetimePassedrcorrido >= 2000) {
32-
clearInterval(timer) // finaliza a animação depois de 2 segundos
33-
return
31+
if (timePassed >= 2000) {
32+
clearInterval(timer); // finaliza a animação depois de 2 segundos
33+
return;
3434
}
3535

3636
// desenha a animação no momento timePassed
37-
draw(timePassed)
38-
}, 20)
37+
draw(timePassed);
38+
39+
}, 20);
3940

40-
// como timePassed vai de 0 a 2000
41-
// deixa gets values de 0 a 400px
41+
// timePassed vai de 0 a 2000
42+
// recebe valores de 0 a 400px
4243
function draw(timePassed) {
43-
train.style.left = timePassed / 5 + 'px'
44+
train.style.left = timePassed / 5 + 'px';
4445
}
4546
```
4647

@@ -105,14 +106,14 @@ O código abaixo mostra o tempo entre as 10 primeiras chamadas de `requestAnimat
105106

106107
```html run height=40 refresh
107108
<script>
108-
let prev = performance.now()
109-
let times = 0
109+
let prev = performance.now();
110+
let times = 0;
110111
111112
requestAnimationFrame(function measure(time) {
112-
document.body.insertAdjacentHTML('beforeEnd', Math.floor(time - prev) + ' ')
113-
prev = time
113+
document.body.insertAdjacentHTML('beforeEnd', Math.floor(time - prev) + ' ');
114+
prev = time;
114115
115-
if (times++ < 10) requestAnimationFrame(measure)
116+
if (times++ < 10) requestAnimationFrame(measure);
116117
})
117118
</script>
118119
```
@@ -123,29 +124,30 @@ Agora podemos fazer uma função de animação mais universal baseada em `reques
123124

124125
```js
125126
function animate({ timing, draw, duration }) {
126-
let start = performance.now()
127+
128+
let start = performance.now();
127129

128130
requestAnimationFrame(function animate(time) {
129131
// timeFraction vai de 0 a 1
130-
let timeFraction = (time - start) / duration
132+
let timeFraction = (time - start) / duration;
131133
if (timeFraction > 1) timeFraction = 1
132134

133135
// calcula o atual estado de animação
134-
let progress = timing(timeFraction)
136+
let progress = timing(timeFraction);
135137

136-
draw(progress) // o desenha
138+
draw(progress); // o desenha
137139

138140
if (timeFraction < 1) {
139-
requestAnimationFrame(animate)
141+
requestAnimationFrame(animate);
140142
}
141-
})
143+
});
142144
}
143145
```
144146

145147
Função `animate` aceita 3 parâmetros que essencialmente descrevem a animação:
146148

147149
`duration`
148-
: Tempo total da animação. Como, `1000`.
150+
: Tempo total da animação. Exemplo, `1000`.
149151

150152
`timing(timeFraction)`
151153
: 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).
@@ -158,7 +160,7 @@ Função `animate` aceita 3 parâmetros que essencialmente descrevem a animaçã
158160
}
159161
```
160162

161-
It's graph:
163+
Seu gráfico:
162164
![](linear.svg)
163165

164166
Isso é igual a `transition-timing-function: linear`. Existem variantes mais interessantes mostradas abaixo.
@@ -192,9 +194,9 @@ animate({
192194
return timeFraction
193195
},
194196
draw(progress) {
195-
elem.style.width = progress * 100 + '%'
196-
},
197-
})
197+
elem.style.width = progress * 100 + '%';
198+
}
199+
});
198200
```
199201

200202
Ao contrário da animação CSS, podemos fazer qualquer função de tempo e qualquer função de desenho. A função de tempo não é limitada pelas curvas de Bezier. E `draw` pode ir além das propriedades, criar novos elements para animações como fogos de artifício ou algo do tipo.
@@ -227,7 +229,7 @@ Veja em ação (clique para ativar):
227229

228230
...Ou a curva cúbica ou evento maior que `n`. Aumentar a potência faz com que acelere mais rapidamente.
229231

230-
Aqui está o gráfico para `progress` na protência `5`:
232+
Aqui está o gráfico para `progress` na potência `5`:
231233

232234
![](quint.svg)
233235

@@ -241,7 +243,7 @@ Função:
241243

242244
```js
243245
function circ(timeFraction) {
244-
return 1 - Math.sin(Math.acos(timeFraction))
246+
return 1 - Math.sin(Math.acos(timeFraction));
245247
}
246248
```
247249

@@ -299,10 +301,7 @@ Mais uma função "elástica" que aceita um parâmetro acidional `x` para o "int
299301

300302
```js
301303
function elastic(x, timeFraction) {
302-
return (
303-
Math.pow(2, 10 * (timeFraction - 1)) *
304-
Math.cos(((20 * Math.PI * x) / 3) * timeFraction)
305-
)
304+
return (Math.pow(2, 10 * (timeFraction - 1)) *Math.cos(((20 * Math.PI * x) / 3) * timeFraction))
306305
}
307306
```
308307

@@ -333,15 +332,15 @@ Em outras palavras, temos uma função de "transformar" `makeEaseOut` que recebe
333332
// aceita a função de tempo, returna a variante transformada
334333
function makeEaseOut(timing) {
335334
return function (timeFraction) {
336-
return 1 - timing(1 - timeFraction)
335+
return 1 - timing(1 - timeFraction);
337336
}
338337
}
339338
```
340339

341340
Por exemplo, podemos usar a função `bounce` descrita acima e aplicá-la:
342341

343342
```js
344-
let bounceEaseOut = makeEaseOut(bounce)
343+
let bounceEaseOut = makeEaseOut(bounce);
345344
```
346345

347346
Assim o quique não será no início, mas no final da animação. O que parece bem melhor:
@@ -366,12 +365,10 @@ Podemos também mostrar o efeito tanto no começo quanto no final da animação.
366365
Dado a função de tempo, calculamos o estado de animação assim:
367366

368367
```js
369-
if (timeFraction <= 0.5) {
370-
// primeira metade da animação
371-
return timing(2 * timeFraction) / 2
372-
} else {
373-
// segunda metade da animação
374-
return (2 - timing(2 * (1 - timeFraction))) / 2
368+
if (timeFraction <= 0.5) { // primeira metade da animação
369+
return timing(2 * timeFraction) / 2;
370+
} else { // segunda metade da animação
371+
return (2 - timing(2 * (1 - timeFraction))) / 2;
375372
}
376373
```
377374

@@ -380,12 +377,14 @@ O código do wrapper:
380377
```js
381378
function makeEaseInOut(timing) {
382379
return function (timeFraction) {
383-
if (timeFraction < 0.5) return timing(2 * timeFraction) / 2
384-
else return (2 - timing(2 * (1 - timeFraction))) / 2
380+
if (timeFraction < 0.5)
381+
return timing(2 * timeFraction) / 2;
382+
else
383+
return (2 - timing(2 * (1 - timeFraction))) / 2;
385384
}
386385
}
387386

388-
bounceEaseInOut = makeEaseInOut(bounce)
387+
bounceEaseInOut = makeEaseInOut(bounce);
389388
```
390389

391390
Em ação, `bounceEaseInOut`:
@@ -422,20 +421,21 @@ Aqui está a função helper `animate` para configura a maioria das animações:
422421

423422
```js
424423
function animate({ timing, draw, duration }) {
425-
let start = performance.now()
424+
425+
let start = performance.now();
426426

427427
requestAnimationFrame(function animate(time) {
428428
// timeFraction vai de 0 a 1
429-
let timeFraction = (time - start) / duration
430-
if (timeFraction > 1) timeFraction = 1
429+
let timeFraction = (time - start) / duration;
430+
if (timeFraction > 1) timeFraction = 1;
431431

432432
// calcular o atual estado da animação
433-
let progress = timing(timeFraction)
433+
let progress = timing(timeFraction);
434434

435-
draw(progress) // o desenha
435+
draw(progress); // o desenha
436436

437437
if (timeFraction < 1) {
438-
requestAnimationFrame(animate)
438+
requestAnimationFrame(animate);
439439
}
440440
})
441441
}

0 commit comments

Comments
 (0)