setInterval에 문제가 있습니다. 내 게임에서 나는 선수가 화살을 쏠 수 있기를 원하지만 화살을 쏠 때마다 화살은 더 빨리 나아 간다! 그래서 일반적인 생각은 화살표 한 초 동안 비행 한 후 삭제됩니다 있다는 것입니다어떻게이 setInterval 문제를 해결할 수 있습니까?
arrows = [];
Arrow = function(x, y, followX, followY) // (player.x, player.y, followX, followY)
{
ar = this;
ar.rect = [x, y, 28, 3];
ar.x = x;
ar.y = y;
ar.followX = followX;
ar.followY = followY;
if(ar.followY - ar.y < 0)
{
ar.where = [-(((ar.followX - ar.x)/200)/((ar.followY - ar.y)/200)), -1];
}
else
{
ar.where = [(((ar.followX - ar.x)/200)/((ar.followY - ar.y)/200)), 1];
}
ar.flying = setInterval(function()
{
ar.rect[0] += ar.where[0]/10;
ar.rect[1] += ar.where[1]/10;
}, 1);
ar.fall = setTimeout(function()
{
for(a = 0; a < arrows.length; a++)
if (arrows[a] == ar)
{
clearInterval(ar.flying);
arrows = sliceHere(arrows, a);
}
}, 1000);
}
: 이 화살표 생성자입니다.
이 생성되는 방식과 화살표입니다 : 그 후
fireArrow = function(player)
{
arrows.push(new Arrow(player.rect[0] + player.rect[2] - 1, player.rect[1] + player.rect[3]/2 - 10, player.rect[0] + player.mouse.x - sx/2, player.rect[1] + player.mouse.y - sy/2));
}
, 난 그냥 화면에 화살표를 그리기 해요, 나 또한 항상 같은 지점에서 화재와 같은 방향이다. 당신의 a
루프 카운터
ar = this;
var ar = this;
그리고 같은에 :이 유일한 문제이지만,이 라인을 변경해야하는 경우
setInterval에서 실제로 1 밀리 초를 원하십니까? – erturne
@erturne - 좋은 지적. 나는 대답을 언급하는 것을 잊어 버렸지 만 그렇습니다. 브라우저는 다른 일을 하느라 바쁘지 않더라도 실제로 1ms 간격을 주려고하지 않습니다. – nnnnnn
알아요,하지만 이것은 노드를 사용하여 실행합니다.) – corazza