2013-05-06 4 views
0

나는 배열에서 x와 y의 좌표를 만들 수있는 몇 가지 자바 스크립트를 쓰고 있어요, 그래서이 코드가 있습니다이 두 위치가 무시되는 이유는 무엇입니까?

var map1 = [ 
    gg,gg,gg,gg,gg,gg,gg,gg,gg,gg,gg,gg,gg,gg,gg, 
    gg,gg,gg,gg,gg,gg,gg,gg,gg,gg,gg,gg,gg,gg,gg, 
    gg,gg,gg,gg,gg,gg,gg,gg,gg,gg,gg,gg,gg,gg,gg, 
    gg,gg,gg,gg,gg,gg,gg,gg,gg,gg,gg,gg,gg,gg,gg, 
    gg,gg,gg,gg,gg,gg,gg,gg,gg,gg,gg,gg,gg,gg,gg, 
    gg,gg,gg,gg,gg,gg,gg,gg,gg,gg,gg,gg,gg,gg,gg, 
    gg,gg,gg,gg,gg,gg,gg,gg,gg,gg,gg,gg,gg,gg,gg, 
    gg,gg,gg,gg,gg,gg,gg,gg,gg,gg,gg,gg,gg,gg,gg, 
    gg,gg,gg,gg,gg,gg,gg,gg,gg,gg,gg,gg,gg,gg,gg, 
    gg,gg,gg,gg,gg,gg,gg,gg,gg,gg,gg,gg,gg,gg,gg, 
    gg,gg,gg,gg,gg,gg,gg,gg,gg,gg,gg,gg,gg,gg,gg, 
    gg,gg,gg,gg,gg,gg,gg,gg,gg,gg,gg,gg,gg,gg,gg, 
    gg,gg,gg,gg,gg,gg,gg,gg,gg,gg,gg,gg,gg,gg,gg, 
    gg,gg,gg,gg,gg,gg,gg,gg,gg,gg,gg,gg,gg,gg,gg, 
    gg,gg,gg,gg,gg,gg,gg,gg,gg,gg,gg,gg,gg,gg,gg, 
]; 
    for (var i=0; i<map1.length; i++) { 
    if (i > 16) { 
     dy = Math.floor(i/15) * 16; 
    } 
    dx = i * 16 
    while (dx >= 240) { 
     dx = dx - 240; 
    } 
    } 

을 그리고 코드가 좌표 0,1를 제외하고, 매우 잘 작동하고 1,1 일이 arent? 이 좌표는이 페이지의 교장 인 here을 사용하여 16 픽셀 블록으로 캔버스를 작성합니다. 그리고이 방정식에 dxdy이 맞습니다. ctx.drawImage(tileset, sx, sy, sWidth, sHeight, dx, dy, dWidth, dHeight); 고마워요!

+0

나는 dx와 dy가 좌표라고 가정합니까? 0,1,1,1의 현재 값은 무엇이며 예상 값은 무엇입니까? – Jonah

+0

'dy'는 조건 하에서 만 정의됩니다. 루프가 처음 실행될 때 그 값은 어디에서 무엇입니까? 그것의 커다란 엉망진문 코드는 쉼표가없고 미친 말도 안되는'while'. – Havenard

+0

아직 for 루프의 조건에서 잠시 동안 가운을 가져 오는 것입니다. –

답변

0

이 방법이 도움이되는지 확신 할 수 없지만 콘솔의 다음 스 니펫이 모든 위치에 대해 올바른 결과를 제공하는 것 같습니다. 아마도 예상되는 출력과 실제 출력을 설명 할 수 있습니까?

var map1 = new Array(225); 
var dx, dy; 

for (var i=0; i<map1.length; i++) { 
    if (i > 16) { 
     dy = Math.floor(i/15) * 16; 
    } 
    dx = i * 16 
    while (dx >= 240) { 
     dx = dx - 240; 
    } 
    console.log(dx + ',' + dy); //Seems to print all positions ok 
} 
+0

은 매력처럼 작동했는데, 왜 내가 잘못 했습니까 ?? –

+0

그 코드는 여전히'dy'를 미리 명시 적으로 정의하지는 않지만 적어도'var'을 사용하여 정의되지 않은 가능한 모든 기존 값을 쉐도 잉합니다. 왜 몸 안쪽에 이런 것이 없습니까? 'dx = (i & 15) << 4; dy = (i >> 4) << 4;' 더 빠른 수학도 있습니다. – ChrisF

+0

기다려,이 잘못, 그 두 여전히 고정 된 및 전체 첫 번째 줄 –