功能只是终止于中间而没有任何错误在Firefox中

时间:2015-09-13 01:59:01

标签: javascript firefox

一定有什么不对劲。我有这个功能,它只适用于整数:

straightPoints = function(x1,y1,x2,y2) {
  console.log("Started getting points.");
  var result = [];
  // Define differences and error check
  var dx = Math.abs(x2 - x1);
  var dy = Math.abs(y2 - y1);
  var sx = (x1 < x2) ? 1 : -1;
  var sy = (y1 < y2) ? 1 : -1;
  var err = dx - dy;
  // Set first coordinates
  result.push(x1);
  result.push(y1);
  // Main loop
  while (!((x1 == x2) && (y1 == y2))) {
    var e2 = err << 1;
    if (e2 > -dy) {
      err -= dy;
      x1 += sx;
    }
    if (e2 < dx) {
      err += dx;
      y1 += sy;
    }
    result.push(x1);
    result.push(y1);
  }
  console.log("Returning result: "+result);
  // Return the result
  return result;
}

这是我想要用于某些游戏的非常典型的线渲染算法。现在奇怪的是,当我用无效参数调用函数时,特别是straightPoints(0,0,0.15425144988758405,-0.9880316240928618);它只是终止而没有任何异常。我注意到有点滞后,我认为这是一个浏览器问题,Firefox并没有通知我杀死javascript线程。

另一方面,滞后的长度比firefox在问我卡住脚本之前的典型时间要短得多。

我做了一个JSFiddle here,所以你可以看到它为你做了什么,但我得到了:

Started getting points, starting at: (0,0,0.15425144988758405,-0.9880316240928618)

然后什么也没有。

0 个答案:

没有答案