작성
·
270
0
calcValues() 함수 부분에서 조금 머리가 안따라주고있는데요..
// 현재 씬(스크롤섹션)에서 스크롤된 범위를 비율로 구하기
let scrollRatio = currentYOffset / sceneInfo[currentScene].scrollHeight;
rv = scrollRatio * (values[1] - values[0]) + values[0];
위의 코드부분이 이해가 잘안갑니다.
1. scrollRatio는 스크롤된 범위를 비율로 구한다고하는데.
현재 활성화된 씬 높이 / 현재 씬의 높이 이 공식이 원래 있는 수학 공식인가요?
스크롤 된 범위 <<< 이게 제가 보고있는 현재 화면을 말하는걸까요?
2. rv = scrollRatio * (values[1] - ..... )
이 코드를 풀어보면 현재 활성화된 씬 * 내가 활성화 시킬 요소의 범위 + 활성화시킬 요소의 값 으로 풀어봤는데.. 맞나요?
이것또한 1번과 같이 원래 있는 수학공식인건가요?
간단한 수학이겠지만.. 저한테는 너무 어렵네요 ㅠㅠㅠ
조금 더 설명이 가능하실까요? 죄송합니다.ㅜㅜ
답변 2
6
원래 있는 공식이라기 보다는, 그냥 단순하게 "비율"을 계산한다고 생각하시면 됩니다.
예를들어 전체 스크롤 범위가 1000이고, 현재 스크롤 위치가 200이라면, 1000 중에 200만큼 스크롤이 된 것이니까
비율 = 200 / 1000 = 0.2가 되겠지요?
이 스크롤로 변화해야할 어떤 값이 예를들어 0 ~ 500의 범위라면,
0.2의 비율만큼 스크롤된 시점에서의 값은
0.2 * 500 = 100이 되겠지요?
좀 더 스크롤 하면
0.3 * 500 = 150
0.4 * 500 = 200
.
.
이런 식으로요.
결국 끝까지(1000 / 1000, 즉 비율 1) 스크롤 한다면
1 * 500 = 500
이렇게 되어 범위의 최대값이 되는 것이고요.
만약 값의 범위가 0 ~ 500이 아니라, 200 ~ 500이라고 한다면,
0.2 * (500 - 200) + 200 이런 식이 되어야 하겠지요.
0.2 비율이 곱해져야하는 값은 값의 총 범위(최댓값 - 최솟값)인 300이고,
전혀 스크롤하지 않았을 때는 최소한 200은 되어야하니까 200을 끝에 더해주는 것이지요.
위의 볼드처리한 식을 자바스크립트 변수로 쓰면 바로 아래 식이 되는 거지요~
rv = scrollRatio * (values[1] - values[0]) + values[0];
2