Counter Expression
숫자가 점점 증가하거나 감소하는 카운터 애니메이션 효과입니다.
Preview
시간에 따라 숫자가 증가/감소하는 애니메이션입니다. Source Text에 적용합니다.
Code
기본 카운터 (Source Text에 적용)
javascript
// Counter Expression
// 숫자가 올라가는 효과
startNum = 0; // 시작 숫자
endNum = 1000; // 끝 숫자
duration = 3; // 걸리는 시간(초)
progress = Math.min(time / duration, 1);
currentNum = Math.floor(startNum + (endNum - startNum) * progress);
currentNum.toString();쉼표 포함 (천 단위 구분)
javascript
startNum = 0;
endNum = 1000000;
duration = 3;
progress = Math.min(time / duration, 1);
currentNum = Math.floor(startNum + (endNum - startNum) * progress);
// 천 단위 쉼표 추가
currentNum.toLocaleString();소수점 포함
javascript
startNum = 0;
endNum = 100;
duration = 3;
decimals = 2; // 소수점 자릿수
progress = Math.min(time / duration, 1);
currentNum = startNum + (endNum - startNum) * progress;
currentNum.toFixed(decimals);Parameters
| 파라미터 | 설명 |
|---|---|
startNum | 시작 숫자 |
endNum | 끝 숫자 |
duration | 카운트 완료까지 걸리는 시간 |
decimals | 소수점 자릿수 |
Examples
카운트다운
javascript
startNum = 10;
endNum = 0;
duration = 10;
progress = Math.min(time / duration, 1);
currentNum = Math.floor(startNum + (endNum - startNum) * progress);
currentNum.toString();백분율 카운터
javascript
endPercent = 87;
duration = 2;
progress = Math.min(time / duration, 1);
currentNum = Math.floor(endPercent * progress);
currentNum + "%";돈 카운터
javascript
startNum = 0;
endNum = 50000;
duration = 3;
progress = Math.min(time / duration, 1);
currentNum = Math.floor(startNum + (endNum - startNum) * progress);
"$" + currentNum.toLocaleString();이징 적용 카운터
Linear
Ease Out
javascript
startNum = 0;
endNum = 1000;
duration = 3;
// Ease Out 적용
t = Math.min(time / duration, 1);
progress = 1 - Math.pow(1 - t, 3); // Cubic ease out
currentNum = Math.floor(startNum + (endNum - startNum) * progress);
currentNum.toLocaleString();Advanced
키프레임 기반 카운터
javascript
// 슬라이더 컨트롤과 연동
startNum = effect("Start")("Slider");
endNum = effect("End")("Slider");
Math.floor(linear(time, 0, 3, startNum, endNum)).toLocaleString();랜덤 증가 효과
javascript
// 약간의 불규칙성 추가
endNum = 1000;
duration = 3;
randomness = 50;
progress = Math.min(time / duration, 1);
base = Math.floor(endNum * progress);
random = Math.floor(Math.random() * randomness) - randomness/2;
Math.max(0, base + random * (1 - progress)).toLocaleString();Tips
Source Text에 적용
이 익스프레션은 텍스트 레이어의 Source Text 속성에 적용합니다.
글꼴 선택
숫자 카운터에는 고정폭(Tabular) 숫자를 지원하는 글꼴을 사용하면 숫자가 바뀔 때 떨리지 않습니다.
Ease 추가
linear 대신 ease를 적용하면 처음엔 천천히, 끝에서 빠르게 등 다양한 느낌을 줄 수 있습니다.
