인프런 커뮤니티 질문&답변

원아영님의 프로필 이미지
원아영

작성한 질문수

인터랙티브 웹 개발 제대로 시작하기

전진! 3D 스크롤 23

run과 관련되어 추가 질문있습니다.

해결된 질문

작성

·

279

0

해당 강의 다른 질문자 님께서 아래와 같이 질문주셨는데요.

-------------------

3D스크롤예제  23강의에서,

requestAnimationFrame을 사용하기위해, 

init 메서드 형제 위치에 run 메서드를 추가해주셨는데요,

init: function () {

~~~

},

run: function () {

~~~

}

};

왜  init메서드안에 run메서드 내용을 포함 하지 않으신걸까용ㅠㅠ?

특별한 이유가 있는건지 궁금합니다!

----------------

답변으로 선생님께서

-------------------

init은 초기화할 때 한번만 실행하는 용도의 함수이고,

run은 requestAnimationFrame으로 계~~속 실행해주어야 하는 함수이기 때문이에요.

init으로 다 합쳐버리면, 초당 거의 60번씩 초기화까지 계속 반복하기 때문에,

엄청난 연산 낭비가 일어나겠지요~^^

-------------------------------------

위와 같이 답변해주셨는데요. 여기서 init은 초기화할 때 한번만 실행하는 용도라는게 인스턴스를 만들때 init에 들어있는 함수들을 인스턴스에 초기 설정으로 넣어준다는 뜻인가요? 그렇다면 run 메서드도 인스턴스에 들어가는 것이라고 생각해서 init에 포함되도 된다고 생각하는데 아닌가요?

초기화의 정확한 뜻이 뭔지 궁금합니다....

init에 들어있는 함수도 계속 사용해야하는 함수 아닌가요 ㅠㅠ?

아니면 그저

한번 이벤트가 발생할때 한번만 실행되는 이벤트(예를 들어 마우스 클릭해주면 좌로 한칸 이동)과 같은 함수는 init에 넣고,

이벤트가 한번 발생할때 계속 반복적으로 실행되는 메서드는 init과 따로 구분해서 넣는게 연산에 이롭다는 말씀일까요?

영상 여러번 봐서 추측이 난무합니다 ㅠㅠ....

답변부탁드릴게요

답변 3

2

1분코딩님의 프로필 이미지
1분코딩
지식공유자

ss S님께서 답글을 잘 달아주셨는데요, 말씀대로 객체 파트를 복습해 보시면 도움이 될거에요~
init은 인스턴스를 생성할 때 초기 세팅을 위해 한번만 실행되는 용도이고,
run은 걸을 때마다 실행되어야 하는 용도입니다.
따라서, 걸을 때는 해당 기능만 실행할 수 있도록 분리해서 run 메소드를 만들어 준 것이지요.
예로 들어주신, 마우스를 클릭했을 때 한칸 이동 같은 기능은, run 처럼 계속 실행할 용도로 생각하셔야 합니다.

init 함수는
처음 객체를 생성하고, 처음에 어느 위치에 생기게 할 것인지를 결정하는 등의 말 그대로 초기 설정를 담당한다고 생각하시면 됩니다.
처음 생성될 때 한번만 실행되면 역할을 다 하는 것이지요.

게임을 예로 들면,
게임에서 공격(attack) 버튼을 누른다고 캐릭터의 초기화(init)까지 할 필요는 없는거니까요.
공격버튼을 누르면, attack() 만 실행하면 되겠지요?

1

이 부분은 객체강의 파트를 자세히 보시면 이해가 갈 겁니다.

0

원아영님의 프로필 이미지
원아영
질문자

객체 다시 복습하고 답글주신거 보니 이해가 됬습니다!!!!

엄청 감사합니다 ss님 1분코딩님!

원아영님의 프로필 이미지
원아영

작성한 질문수

질문하기