이징(Easing)
Easing
모듈은 일반적인 이징 함수를 구현한다. 이 모듈은 Animated.timing()
에서 애니메이션의 물리적으로 자연스러운 움직임을 전달하기 위해 사용한다.
일부 일반적인 이징 함수의 시각화는 https://easings.net/에서 확인할 수 있다.
사전 정의된 애니메이션
Easing
모듈은 다음과 같은 메서드를 통해 여러 가지 미리 정의된 애니메이션을 제공한다:
back
: 객체가 앞으로 이동하기 전에 약간 뒤로 물러나는 기본 애니메이션을 제공한다.bounce
: 튀는 듯한 효과의 애니메이션을 제공한다.ease
: 기본적인 관성 애니메이션을 제공한다.elastic
: 기본적인 스프링 효과를 제공한다.
기본 이징 함수
세 가지 기본 이징 함수를 제공한다:
poly
함수를 사용하면 4차, 5차 및 그 이상의 고차 함수를 구현할 수 있다.
추가적인 수학 함수는 다음과 같은 메서드로 제공된다:
다음 헬퍼 함수들은 다른 이징 함수를 수정하는 데 사용된다.
- TypeScript
- JavaScript
참고 자료
메서드
step0()
static step0(n: number);
스텝 함수로, n
이 양수일 때 항상 1을 반환한다.
step1()
static step1(n: number);
단계 함수로, n
이 1보다 크거나 같으면 1을 반환한다.
linear()
static linear(t: number);
선형 함수인 f(t) = t
를 나타낸다. 위치는 경과 시간과 1:1로 비례한다.
https://cubic-bezier.com/#0,0,1,1
ease()
static ease(t: number);
기본적인 관성 동작을 구현한다. 물체가 천천히 가속하면서 속도를 내는 것과 유사한 효과를 제공한다.
https://cubic-bezier.com/#.42,0,1,1
quad()
static quad(t: number);
quad()
는 2차 함수 f(t) = t * t
를 나타낸다. 위치는 경과 시간의 제곱과 같다.
https://easings.net/#easeInQuad
cubic()
static cubic(t: number);
입력값 t의 세제곱을 반환하는 함수로, f(t) = t * t * t
형태를 가진다. 시간이 지남에 따라 위치가 세제곱으로 변화한다.
https://easings.net/#easeInCubic
poly()
static poly(n: number);
거듭제곱 함수다. 위치는 경과 시간의 N제곱과 같다.
n = 4: https://easings.net/#easeInQuart
n = 5: https://easings.net/#easeInQuint
sin()
static sin(t: number);
사인 함수를 사용한 부드러운 변화를 구현한다. 이 함수는 주로 애니메이션의 easing 효과를 만들 때 활용한다.
https://easings.net/#easeInSine
circle()
static circle(t: number);
원형 함수를 나타낸다. 이 함수는 주로 애니메이션의 easing 효과를 구현할 때 사용한다.
https://easings.net/#easeInCirc
exp()
static exp(t: number);
지수 함수를 나타낸다.
https://easings.net/#easeInExpo
elastic()
static elastic(bounciness: number);
스프링이 앞뒤로 진동하는 것과 유사한 기본적인 탄성 효과를 제공한다.
기본값인 bounciness가 1일 때는 약간의 오버슈트가 발생한다. bounciness가 0이면 오버슈트가 전혀 없고, bounciness가 N > 1이면 약 N번 정도 오버슈트가 발생한다.
https://easings.net/#easeInElastic
back()
static back(s)
Animated.parallel()
과 함께 사용하여 애니메이션이 시작될 때 객체가 약간 뒤로 이동하는 기본 효과를 만든다.
bounce()
static bounce(t: number);
기본적인 바운스 효과를 제공한다.
https://easings.net/#easeInBounce
bezier()
static bezier(x1: number, y1: number, x2: number, y2: number);
CSS 트랜지션의 transition-timing-function
과 동일한 3차 베지어 곡선을 제공한다.
3차 베지어 곡선을 시각적으로 확인할 수 있는 유용한 도구는 https://cubic-bezier.com/에서 찾을 수 있다.
in()
static in(easing: number);
이징 함수를 정방향으로 실행한다.
out()
static out(easing: number);
이징(easing) 함수를 역방향으로 실행한다.
inOut()
static inOut(easing: number);
어떤 이징 함수든 대칭적으로 동작하도록 만든다. 이징 함수는 지속 시간의 절반 동안 앞으로 진행한 후, 나머지 절반 동안 뒤로 진행한다.