• 카테고리

    질문 & 답변
  • 세부 분야

    프론트엔드

  • 해결 여부

    미해결

머리가 복잡해요..

21.01.11 19:31 작성 조회수 163

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

답변 감사합니다 이해가 쏙 됬습니다!