setInterval(createGhost, 3000); // 3초마다 고스트 랜덤생성 함수 실행
function chreateGhost(){
const ghostDiv = document.createElement('div');
document.getElementsByClassName('bgContainer')[0].appendChild(ghostDiv);
ghostDiv.classList.add('ghost');
ghostDiv.style.left = (Math.random() * 750) + 'px'
}
setInterval(fallingGhost, 10) // 고스트 내려오는 함수 + 땅에 도착하거나 히어로에 부딛히면 고스트가 죽는 함수
function fallingGhost(){
const ghost = document.getElementsByClassName('ghost');//고스트 접근
for(let i = 0; i < ghost.length; i++){
const goDown = ghost[i].offsetTop + 2;
if(ghost[i].offsetTop === 550){
ghost[i].style.backgroundPosition = '45px';
ghost[i].className = 'ghostDead'
setTimeout(() => {
removeGhost();
}, 2000);
} else if(ghost[i].offsetTop === 490 && ghost[i].offsetLeft > hero.offsetLeft - 45 && ghost[i].offsetLeft < hero.offsetLeft+35){
ghost[i].style.backgroundPosition = '45px';
ghost[i].className = 'ghostDead';
setTimeout(() => {
removeGhost();
}, 2000);
} else {
ghost[i].style.top = goDown + 'px';
}
}
}
function removeGhost(){
let ghostDead = document.getElementsByClassName('ghostDead')[0];
let bg = document.getElementsByClassName('bgContainer')[0];
bg.removeChild(ghostDead);
}
리뷰
고스트가 죽고나서 몇 초뒤에 사라지게 하기위해 setTimeout함수를 사용했다. 초반에 많은 에러들을 만났는데, setTimeout 함수를 제대로 쓰지 못한 것인지 에러가 계속 발생했다.
//처음에 계속 오류가 났던 함수
setTimeout(ghost.remove(), 3000);
//수정한 함수 , setTimeout , setInterval 함수는 보통 에로우 함수식으로 쓸 것
setTimeout(() => {
removeGhost();
}, 2000)
배운점
벨로그가 점점 풍부해지는 군요 심플키님