inflearn logo
강의

Khóa học

Chia sẻ kiến thức

Hướng dẫn GSAP dành cho hoạt hình trên web Phần 03

Thực hành (3)

imagesLoaded에 관한 질문

37

JJJ

10 câu hỏi đã được viết

0

섹션2. Basic Trigger

Practice(3) 이 부분을 들었는데요,

여기서 강사님 화면에서는 숫자 0에서 100% 올라가는 숫자카운팅이 보여지는데

전 0% 에서 바로 100% 가 됩니다. 그 이후의 동작은 정상적으로 잘 되는데,

강사님의 소스에서도 동일한 현상이 나타나는데 이유가 뭔지 알 수 있을까요?

javascript 애니메이션 인터랙티브-웹 gsap scrolltrigger

Câu trả lời 2

0

JJJ

function init(){
    showDemo();
    awesome();
    tryNow();
}

const img = gsap.utils.toArray('img');
const loader = document.querySelector('.loader--text');

const progressObj = {
    value: 0
};

// 초기 상태 명확히 설정
gsap.set(progressObj, { value: 0 });

if (loader) {
    loader.textContent = '0%';
}

const updateProgress = (instance) => {
    const targetProgress = Math.round(instance.progressedCount * 100 / img.length);

    gsap.to(progressObj, {
        value: targetProgress,
        duration: 0.4,
        ease: 'power1.out',
        overwrite: true,
        onUpdate: function() {
            loader.textContent = `${Math.round(progressObj.value)}%`;
        }
    });
}

imagesLoaded(img)
.on('progress', updateProgress)
.on('always', function(){
    gsap.to(progressObj, {
        value: 100,
        duration: 0.5,
        ease: 'power1.out',
        overwrite: true,
        onUpdate: function() {
            loader.textContent = `${Math.round(progressObj.value)}%`;
        },
        onComplete: function() {
            init();
        }
    });
})

위와 같이 수정했더니 0에서 100으로 순차적으로 로딩되는 것을 발견했습니다. 강사님의 코드에서는 왜 순차적으로 숫자가 변하지 않는걸까요??

0

communityai8509

안녕하세요, 인프런 AI 인턴입니다.

JJJ님께서 언급하신 문제는 GSAP와 관련된 자바스크립트 애니메이션 실행 흐름에서 발생할 수 있는 일반적인 현상 일 수 있습니다. 숫자 카운팅이 예상치 않게 바로 100%로 넘어가 버리는 이유는 보통 애니메이션의 초기 상태 설정이나 이벤트 트리거링 설정에서 기인할 가능성이 큽니다.

올바른 구현을 위해 다음과 같은 점을 확인하고 조정해 보세요:

  1. 초기 상태 설정: 카운트가 시작되는 지점(0%)이 정확히 초기화되어 있는지 확인합니다. GSAP의 fromTo() 기능을 활용하면 더욱 명확하게 초기 상태와 목표 상태를 설정할 수 있습니다.

  2. GSAP 애니메이션 구성: .set() 메서드 등으로 초기 상태를 세팅하고 애니메이션 시작부에서 명확한 초깃값을 설정해 보세요.

  3. 비동기적 로드 제어: 애니메이션이 실행될 때 필요한 리소스들이 모두 로드된 상태인지 확인해야 합니다. imagesLoaded 혹은 JS의 window.onload 이벤트를 사용하여, 모든 리소스 로딩 완료를 보장한 후 애니메이션을 시작하도록 제어할 수 있습니다.

유사한 문제에 대한 해결책은 “gsap 애니메이션 초기값 설정 문제 해결”에서 제공되었으니 참고해 보세요. 이 게시물에서는 애니메이션 시작 시 발생할 수 있는 불규칙한 동작을 피하기 위한 구체적인 설명과 해결방법을 소개합니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

윈도우에서는동작줄이기가어디에있을까요??

0

34

1

섹션04 Layout에서 Mixed Layout파트의 실습 index.html파일 열었을때 선생님께서 보여주시는 가로스크롤이 안나타남.

0

112

3

안녕하세요 ScrollSmoother에 대해 질문드릴게요

1

219

2

GSAP 플러그인의 무료화 관련

2

256

3

barba와 ScrollSmoother 사용했을 때 스크롤 업데이트

0

125

2

barba.js 사용시 페이지이동

1

221

2

이상한 부분이 있어서 문의드립니다.

1

111

1

smooth-scrollbar 관련 질문

1

242

2

imagesLoaded 에 관해 질문드려요

1

114

1

scroll Draw SVG에서 실선이 아닌 점선으로 그리고 싶어요

1

196

1

파트 4 오픈 일정 문의

1

150

2

GSAP을 사용하면서 리사이징 시 애니메이션 값 재할당에 대해 질문드립니다.

1

206

2

스무스 스크롤바 모바일에서 뻑뻑한 느낌이 들어요!

1

261

2

OneScroll Layout 질문 드립니다!

1

175

2

OneScroll Layout (1) 관련 재질문드립니다.

2

178

1

OneScroll Layout (1) 강의중 질문 드립니다.

1

279

1

이미지 엑박

1

198

1

UI관련 문의드립니다..!

1

244

2

OneScroll Layout 모바일 터치

1

482

2

노션 링크 보는 곳

1

398

1

반응형 관련해서 질문드립니다.

1

575

2

ScrollTrigger의 end와 toggleClass

1

954

1

Text Effects(2)는 Text Effects(1)영상에 포함돼있는 것 같아요!

1

272

1

nav위에 마우스를 올리면 스크롤이 안돼요 😢

1

505

2