그래서 HTML5 캔버스와 자바 스크립트를 사용하여 간단한 물리 시뮬레이션을 만들고 있습니다. 현실적인 충돌을 시도하고 있지만 충돌이 발생할 때마다 코드가 무한 루프를 반복하여 페이지를 고정시킵니다.Javascript, loops 無限로 동결
나는 자바 스크립트 콘솔에서 라인 "을 console.log를 ("내가 뭔가와 충돌하고있다 ")"볼 때 구글 크롬 24.0.1312.32 베타 m
를 사용하여 당 수천 번 미쳐 가고 인쇄하고 두 번째로 페이지가 완전히 깨집니다.
나는 왜 그 일이 벌어지고 있는지, 나는 무엇을 해야할지 잘 모릅니다. 어떤 도움이나 의견도 정말 감사 할 것입니다.
for (i = 0; i <= 3; i++) {
if (collide(i)) {
console.log("I am colliding with something");
if (typeof getCollideIndx === 'undefined') {
console.log("collide index is not undefined");
if (!getCollideIndx(i)) {
console.log("Made it past null check");
//...update object based on collision
을 충돌() 함수는 다음과 같습니다
function collide(b) {
for (i = 0; i <= 3; i++) {
//Distance between each object
var distance = (Math.sqrt(Math.pow((balls[b].x - balls[i].x), 2) + Math.pow(balls[b].y - balls[i].y, 2)));
if (distance < 32) {
//must be less than 2*radius -- all radii are the same
//makes it so that it doesn't return true when checking its own index
if (!(balls[b].mass == balls[i].mass)) {
return true;
} else {
return false;
}
}
}
}
무한 루프가 보이지 않습니다. 첫 번째 코드 블록을 무엇이라고 부릅니까? 첫 번째'for' 루프 위에 무엇인가를 출력한다면, 역시 1 톤 인쇄 될까요? – loganfsmyth
어떤 종류의 실행 루프 내에 있습니까? 당신의 루프를 추측하는 것은 예를 들어 30fps로 더 많이 실행할 것입니다. 그렇다면이 코드를 초당 30 번 호출 할 것입니다. –
게임의 루핑 기능 내에 있습니다. 30 밀리 초마다 호출됩니다. 내가 그것을 실행할 때마다 초당 15,000 회 이상 인쇄되고 페이지가 정지됩니다. 이 페이지에 대한 링크는 다음과 같습니다 : univeloper.freeiz.com/simulation.html – ZacB