어려웠던점. 1
//오류메시지뜸
function checkMissile(){
for(var i=0; i<missList.length; i++){
var tmp=missList[i];
if(missList[i].y<-25){
tmp.splice(i, 1);
}
}
}
// 정상 출력
function checkMissile(){
for(var i=0; i<missList.length; i++){
var tmp=missList[i];
if(tmp.y<=-25){
missList.splice(i, 1);
}
}
}
미사일이 화면 밖으로 나가면 해당 미사일 객체는 배열에서 자동으로 삭제되도록하여 컴퓨터 과부하를 막고자함.
그런데
tmp.splice(i,1);으로 배열에 있는 객체를 삭제하려고 하니
TypeError: splice is not a function
에러 메시지가 뜸.
이유는
splice();는 배열에 있는 컨텐츠만 삭제할 수 있는 함수인데, tmp는 missList 배열의 안에 있는 객체를 참조한 변수이다.
따라서 splice가 작동하지 않음.
missList를 참조하니 잘 됨.
어려웠던점. 2
//6. 미사일의 정보를 담을 배열 만들기
var missList=[];
...
//6. 미사일 이미지 그리기
setInterval(function(){
...
for(var i=0; i<missList.length; i++){
var tmp=missList[i];
context.drawImage(missImg, tmp.x-25, tmp.y-25, 50, 50);
...
}
}, 10);
//6. 미사일 객체 생성
function makeMissile(){
if(count%10!=0){
return;
}
var obj={}
obj.x=unitX;
obj.y=unitY;
// obj.isDead=false;
missList.push(obj);
}
미사일이 객체와 각각의 객체가 그려지는 시점이 이해가 잘 안 됬음.
미사일 객체가 생성되는 시점 : setInterval이 1번 돌때마다 1번씩 생성, 그러나 if문을 주었기 때문에 setInterval이 10번돌면 1번씩 생성됨.
생성된 미사일 객체가 그려지는 시점 : setInterval이 실행되는 시점에 for문 안에서 생성된 각각의 객체의 위치를 그려준다.
'Javascript' 카테고리의 다른 글
for구문 / array(배열) 연습 (0) | 2019.11.17 |
---|---|
[드래곤플라이트 만들기]makeEnemy / moveEnemy / checkEnemy (0) | 2019.11.13 |
동기(synchronous) vs 비동기(asynchronous) (0) | 2019.11.08 |
반복문 (0) | 2019.11.06 |
key값과 value 값 (0) | 2019.11.06 |