작성
·
284
0
안녕하세요 강사님 복습 공부중에 질문이 생겨서 남깁니다.!
개인프로젝트에 강의에서 배운 스크롤 블랜딩효과를 주고 만들고 있습니다.
1. 강의에선 clearRect()를 사용안해도 다시 그려지던데 저는 clearRect()를 사용안하면 그려진게 그대로 남더라구요
clearRect()를 안쓰고 다시 그려지는 방법이 있는건가요?
2. 스크롤을 천천히하면 원하던 효과가 적용되는데 스크롤을 빠르게 해버리면 이미지가 겹쳐지거나 레이아웃이 꺠져버립니다.
스크롤을 빠르게하더라도 안정감있게 적용하는 방법이 있을까요?
답변 2
0
0
1. 강의에서도 그려진게 그대로 남지만, 꽉 차는 이미지를 덧칠해서 새로 그리기때문에 이전에 남아있는게 안보이는거랍니다^^
남아있는걸 원하지 않으시면 clearRect로 지워주시면 됩니다. 또는, canvas.width = canvas.width; 이런 식으로 canvas의 사이즈를 재설정 하는 것으로도 clearRect와 같은 효과를 보실 수 있습니다.
2. 스크롤 이슈는 단순한 형태에서보다 해당 시점의 특정 값을 이용해 무언가 처리하는 상황에서 자주 발생할 수 있는데요, 상황에 따라 원인이 다 다르다보니 구체적으로 딱 이게 해결법이다-라고 하기는 어렵습니다. 그렇지만 레이아웃을 재설정하는 함수(우리 예제에서는 setLayout 함수가 해당)를 의도적으로 1-2회 더 호출해줌으로써 많은 상황들을 처리할 수 있을 것으로 생각됩니다.
강의에도 비슷한 처리를 하는 부분이 있어서, 후반부에 버그처리 부분을 보시면 감을 잡으실 수 있지 않을까 생각됩니다^^