inflearn logo
강의

Course

Instructor

GSAP Guide for Web Animation Part.03

Practice (3)

imagesLoaded에 관한 질문

5

JJJ

6 asked

0

섹션2. Basic Trigger

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

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

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

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

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

Answer 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 애니메이션 초기값 설정 문제 해결”에서 제공되었으니 참고해 보세요. 이 게시물에서는 애니메이션 시작 시 발생할 수 있는 불규칙한 동작을 피하기 위한 구체적인 설명과 해결방법을 소개합니다.

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

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

0

84

3

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

1

199

2

GSAP 플러그인의 무료화 관련

2

222

3

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

0

110

2

barba.js 사용시 페이지이동

1

203

2

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

1

101

1

smooth-scrollbar 관련 질문

1

224

2

imagesLoaded 에 관해 질문드려요

1

104

1

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

1

183

1

파트 4 오픈 일정 문의

1

142

2

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

1

190

2

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

1

244

2

OneScroll Layout 질문 드립니다!

1

160

2

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

2

164

1

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

1

265

1

이미지 엑박

1

186

1

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

1

234

2

OneScroll Layout 모바일 터치

1

468

2

노션 링크 보는 곳

1

384

1

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

1

556

2

ScrollTrigger의 end와 toggleClass

1

945

1

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

1

264

1

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

1

488

2

ScrollTrigger의 animation에 함수호출

1

447

1