2021.04.30
소스코드: rsp.html

{IMG_URL}) 0 0`;
스타일의 background는 이미지 X좌표 Y좌표값을 입력할 수 있다.
const rspX = {
scissors: "0",
rock: "- 230px",
paper: "-440px",
};
위와 같이 공통된 속성을 지닌 변수의 모임은 객체로 묶어주는 것이 현명하다.
$computer.style.background = `url(${IMG_URL}) ${rspX[computerChoice]} 0`;
$computer.style.backgroundSize = "auto 200px";
rspX.computerChoice하면 안된다. 왜냐하면 rspX객체엔 computerChoice라는 문자열 속성이 없기 때문에 rspX[computerChoice]로 선택해야 한다.
background를 수정할 때마다 size도 초기화되기 때문에 항상 background와 backgroundSize는 붙어있어야 한다.
setInterval함수는 return값이 존재한다. 그 값은 타이머에 대한 아이디(숫자)로 해당 값을 사용하여 타이머를 제거할 수 있다.
setInterval을 취소할 수 있는 방법으로 clearInterval을 제공한다.
let ID= setInterval(함수,ms)
setTimeout함수도 clearTimeout으로 제거할 수 있지만 setTimeout함수 내의 인수로 넣은 함수가 실행되기 전에 clearTimeout을 호출해야 한다.
const clickButton = () => {
//버튼을 눌렀을 때
clearInterval(intervalId); // 타이머 멈춤.
//점수 계산 및 화면 표시
setTimeout(() => {
intervalId = setInterval(changeComputerHand, 50); //타이머를 만들 때마다 변수에 저장한 후에 clearInterval해야 한다.
}, 1000); //1초 뒤에 다시 setInterval.
};
$rock.addEventListener("click", clickButton);
$scissors.addEventListener("click", clickButton);
$paper.addEventListener("click", clickButton);
const clickButton = () => {
clearInterval(intervalId);
setTimeout(() => {
clearInterval(intervalId); //추가.
intervalId = setInterval(changeComputerHand, 50);
}, 1000);
};
$rock.addEventListener("click", clickButton);
$scissors.addEventListener("click", clickButton);
$paper.addEventListener("click", clickButton);
const clickButton = () => {
$rock.removeEventListener("click", clickButton); //추가.
$scissors.removeEventListener("click", clickButton); //추가.
$paper.removeEventListener("click", clickButton); //추가.
//clickButton이 실행되는 최초에 한번 제거
setTimeout(() => {
$rock.addEventListener("click", clickButton); //추가.
$scissors.addEventListener("click", clickButton); //추가.
$paper.addEventListener("click", clickButton); //추가.
//1초 뒤 실행되는 setTimeout마다 실행
intervalId = setInterval(changeComputerHand, 50);
}, 1000);
};
$rock.addEventListener("click", clickButton);
$scissors.addEventListener("click", clickButton);
$paper.addEventListener("click", clickButton);
let clickable = true; //추가.
const clickButton = () => {
if (clickable) {
clearInterval(intervalId);
clickable = false; //추가.
setTimeout(() => {
clickable = true; //추가.
intervalId = setInterval(changeComputerHand, 50);
}, 1000);
}
};