이징(Easing)
Easing
모듈은 일반적으로 사용되는 이징 함수를 구현한다. 이 모듈은 Animated.timing()
에서 애니메이션에 물리적으로 자연스러운 움직임을 전달하기 위해 사용된다.
일부 일반적인 이징 함수의 시각화는 https://easings.net/에서 확인할 수 있다.
사전 정의된 애니메이션
Easing
모듈은 다음과 같은 메서드를 통해 여러 가지 사전 정의된 애니메이션을 제공한다:
back
: 오브젝트가 앞으로 이동하기 전에 약간 뒤로 물러나는 기본 애니메이션을 제공한다.bounce
: 튕기는 효과의 애니메이션을 제공한다.ease
: 기본적인 관성 애니메이션을 제공한다.elastic
: 기본적인 스프링 효과의 애니메이션을 제공한다.
기본 제공 트랜지션 함수
세 가지 기본 트랜지션 함수를 제공한다:
poly
함수를 사용하면 4차, 5차 함수와 같은 고차원 함수를 구현할 수 있다.
추가 기능
다음 메서드들은 추가적인 수학적 기능을 제공한다:
다음 헬퍼 함수들은 다른 이징(easing) 함수를 수정하는 데 사용된다.
예제
- TypeScript
- JavaScript
참고 자료
메서드
step0()
static step0(n: number);
스텝 함수로, n
이 양수일 때 항상 1을 반환한다.
step1()
static step1(n: number);
단계 함수로, n
이 1보다 크거나 같으면 1을 반환한다.
linear()
static linear(t: number);
linear()
함수는 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);
이차 함수 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);
사인 함수를 나타낸다. 이 함수는 부드러운 진동 형태의 움직임을 생성한다.
자세한 내용은 easings.net에서 확인할 수 있다.
circle()
static circle(t: number);
원형 함수이다.
https://easings.net/#easeInCirc
exp()
static exp(t: number);
지수 함수를 나타낸다. 이 함수는 시간에 따라 점점 가속되는 효과를 구현할 때 사용된다.
자세한 내용은 easings.net에서 확인할 수 있다.
elastic()
static elastic(bounciness: number);
탄성 효과를 구현하는 기본적인 상호작용이다. 스프링이 앞뒤로 진동하는 것과 유사한 움직임을 보인다.
기본값인 bounciness 1은 한 번 약간의 오버슈트를 발생시킨다. bounciness가 0이면 오버슈트가 전혀 발생하지 않으며, 1보다 큰 N 값은 약 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 트랜지션(Transitions)의 transition-timing-function
과 동일한 3차 베지어 곡선(cubic bezier curve)을 제공한다.
3차 베지어 곡선을 시각적으로 확인할 수 있는 유용한 도구는 https://cubic-bezier.com/에서 찾아볼 수 있다.
in()
static in(easing: number);
이징 함수를 정방향으로 실행한다.
out()
static out(easing: number);
이징 함수를 역방향으로 실행한다.
inOut()
static inOut(easing: number);
이 함수는 모든 easing 함수를 대칭적으로 만든다. easing 함수는 지속 시간의 절반 동안 앞으로 진행되고, 나머지 절반 동안은 뒤로 진행된다.