function calcValues(values, currentYOffset) {
let rv;
// 현재 씬(스크롤섹션)에서 스크롤된 범위를 비율로 구하기
const scrollHeight = sceneInfo[currentScene].scrollHeight;
const scrollRatio = currentYOffset / scrollHeight;
if (values.length === 3) {
// start ~ end 사이에 애니메이션 실행
const partScrollStart = values[2].start * scrollHeight;
const partScrollEnd = values[2].end * scrollHeight;
const partScrollHeight = partScrollEnd - partScrollStart;
if (currentYOffset >= partScrollStart && currentYOffset <= partScrollEnd) {
rv = (currentYOffset - partScrollStart) / partScrollHeight * (values[1] - values[0]) + values[0];
} else if (currentYOffset < partScrollStart) {
rv = values[0];
} else if (currentYOffset > partScrollEnd) {
rv = values[1];
}
} else {
rv = scrollRatio * (values[1] - values[0]) + values[0];
}
return rv;
}
해석
- scrollHeight : 지금 현재 씬의 높이
- 지금 현재씬 높이 /현재 활성화된 씬의 비율
- 만약 values 값이 3개라면 ex) example : [0, 1, {start : 0.1, end : 0.2}]
- partScroll start,end(비율..) 는 scrollHeight(지금 현재 씬의 높이)를 곱함
- partScrollHeight : start와 end의 중간 값
- 만약 현재 스크롤 위치가 스타트 위치보다 위에 있고 스크롤 위치가 end보다 작은곳에 있다면?
- 현재 스크롤 위치 빼기 시작 위치 / (sceneInfo[0~3]의 높이) * (끝값 - 시작값) + 시작값
- 사이 값이 아닐때 (partScrollStart값보다 작을때)=> 시작값
- 사이 값이 아닐대(partScrollend 값보다 클때) => 끝값
- value값이 3이 아니라면 ..? 이해 못함
정리하면서 공부하고 있는데.. value 값이 3이 아닌건
videoImageCount: 960,
imageSequence: [0, 959],
이부분도 3이 아닌데.. 그러면 videoImageCount일때는 values[1]의 값은 무엇인가요??
그리고 혹시 제가 설명한부분이 틀린부분있으면 고쳐주실수 있으실까요?
아 또 여쭈어볼게 있는데
if (delayedYOffset < prevScrollHeight + sceneInfo[currentScene].scrollHeight) {
document.body.classList.remove('scroll-effect-end');
}
scroll-effect-end가 바디 클래스 리스트에 붙는다고 하는데 아무리 찾아봐도 안붙는거 가아서요 이부분이 이해가 안가네요 ㅠㅠ 도와주세요