애니메이션 재생헤드를 처음으로...
안녕하세요 선생님
1.
어제 질문드린 내용(forEach로 다중 요소에 중복 이벤트 걸기)은 마지막에 말씀해주신
'gsap.to(item,{rotation:”+=360”}) 으로 작성해보세요 ' 코드로 해결을 하였습니다. 감사합니다.
그런데 그전에
'그럴경우 애니메이션이 종료 후 애니메이션의 재생헤드를 처음으로 돌려놓는 코드를 작성해 주시거나' 라고 말씀해주셨는데... 이게 어떻게 하는건지 도저히 모르겠어요..ㅜㅜㅜ
예시코드를 시간되실때 한번 보여주셨음 해요..
(아직 많이 부족합니다..이해 부탁드려요..ㅜㅜ)
시간되실 때 천천히 해주셔도 됩니다.
항상 똑부러지는 강의 잘 듣고 있습니다.
감사합니다.
Answer 1
0
안녕하세요 leo 님 :)
단일 대상의 애니메이션을 지속적으로 클릭시 동일한 애니메이션이 작동되게 코드를 작성하는 방법은 다양하게 있습니다. 그중에서 두가지 정도만 코드로 보여드리면서 설명을 드려보겠습니다
애니메이션 종료 후 진행률을 가져와 애니메이션의 시작점으로 재생헤드를 이동시켜 다시 애니메이션이 시작될 수 있도록 한다.
boxes.forEach((box)=>{
box.addEventListener('click',()=>{
gsap.to(box,{
rotation:360,
onComplete(){
this.paused(true).progress(0)
}
})
})
})
여기서 콜백함수인 onComplete 메서드를 consise 방식으로 설정했기 때문에 함수 안에서의 this는 tween 자체가 들어오게 됩니다.
자신의 트윈을 일시정지 시킨 후 progress의 setter 기능을 활용해 재생헤드를 제일 앞으로 (0) 이동시켜 줍니다. (progress의 값이 1일경우 애니메이션 종료를 뜻합니다.)
일시정지를 하지 않으면 애니메이션이 무한으로 반복되기 때문에 항상 앞에 일시정지를 해주시고 paused메서드에서 반환되는 값이 역시 트윈 자체가 반환되기 때문에 method chain 기능을 활용해 작성할 수 있습니다.
결국 360도의 값을 가지고 있기 때문에 애니메이션이 다시 작동되지 않는다면, 애니메이션 종료 후 원래의 값으로 되돌려 놓거나 지워버린다.
clearProps를 사용한 속성 제거
boxes.forEach((box)=>{
box.addEventListener('click',()=>{
gsap.to(box,{
rotation:360,
clearProps:'rotation',
})
})
})
gsap part1에서 애니메이션의 속성 자체를 제거하는 clearProps에 대해 설명한적이 있습니다. 해당 속성을 사용할 경우 애니메이션 종료 후 대상이 가지고있는 property를 제거해 줌으로써 동일한 애니메이션을 다시 실행할 수 있습니다.
gsap.set을 사용해 되돌리기
boxes.forEach((box)=>{
box.addEventListener('click',()=>{
gsap.to(box,{
rotation:360,
onComplete(){
gsap.set(box,{rotation:0})
}
})
})
})애니메이션 종료 시점을 체크해 set메서드를 사용하여 box의 rotation값을 다시 0으로 되돌려 놓으면 해당 애니메이션을 다시 재생시킬 수 있습니다.
위에서 언급드린 방법 말고도 다양한 방법들이 존재하며 이는 정해진 규칙이 아닌 개발자의 취향에 따라 얼마든지 변형하여 사용가능합니다.
열심히 공부하시는 leo님을 응원합니다 :)
화이팅 💪
아래 질문 (토이스토리 title에 있는 button에 링크 거는 법)에 대한 해결방법이 이게 맞을까요? 더 좋은 방법이 있으면 알려주세요
0
57
1
토이스토리 practice에서 "WATCH NOW"버튼에 대한 href 속성값을 변경하는 방법
0
45
1
motionpath 플러그인에서 align의 자세한 역할 궁금합니다
1
80
2
선생님 알려주신 내용을 기반삼아 구현하고 싶은 UI가 있습니다.
1
197
2
set에 대해서 궁금증.
1
179
2
set에 대해서
1
143
2
gsap.set 은 어디에서 처음 배우는가요?
2
202
2
섹션 0, 버그와 리팩토링에서 아이콘 클릭시 진행률을 알아올 수 있나요??
1
146
1
GSAP 가이드 Part.02 강의 > 01 > practice html 맨처음 시작시 강의랑 동일하지 않을 경우
1
240
2
advanced 수업자료 문의
2
220
1
duration과 stagger
1
246
1
이미지 관련 사이트 문의드립니다.
1
215
1
노션 링크는 어디에 있는지 문의 드립니다~
1
369
1
SplitText를 순수 자바스크립트로 써봤어요
3
661
1
.left는 quickTo를 쓰지 않는 이유
2
344
1
[3D 텍스트효과(2)] GSAP을 위한 애니메이션 Timeline flow"기획", 이렇게 하면 될까요?
1
514
1
map으로 배열을 만들지 않아도 괜찮을까요?
1
333
1
forEach안에서 gsap을 사용할 때 이벤트가 한번밖에 안걸리는 문제
1
626
1
gsap.set() vs gsap.default()
1
361
1
dragger에서 #timeline이 드래그 되는 이유
1
234
1
강의 보던중 사용중인 툴이 궁금해서 여쭤봅니다.
1
340
1
안녕하세요 수업자료를 다운받았는데 중간중간 파일이 없어요 ㅠㅠ
1
404
1
안녕하세요 이렇게 나오는데..
1
415
1
이후에 출시될 강의엔 유료 플러그인이 사용되나요?
1
291
1

