我的出发点并未改变javascript

时间:2017-02-16 17:57:27

标签: javascript processing

这是用p5.js / processing编写的。我的问题是,所有函数调用都是从起点开始,当它应该更新到旧点时

var aslider, lslider, sslider, newx, newy;
function setup() {
  createCanvas(300,300);
  aslider = createSlider(1,359,17); #angle
  lslider = createSlider(1,50,10); #length
  sslider = createSlider(1,50,20); #amount of side
}

function draw() {
  var angle = aslider.value();
  var length = lslider.value();
  var size = sslider.value();
  var startx = 100;
  var starty = 100;
  var radians = angle * (Math.PI/180);
  for (var i = 0; i < size; i++) {
    newx =  Math.cos(radians) * length + startx;
    newy = Math.sin(radians) * length + starty;
    line(startx, starty, newx, newy);
    startx = newx; #not changing
    starty = newy; #not changing
  }
}

1 个答案:

答案 0 :(得分:0)

您的startxstarty变量似乎没有变化的原因是因为它们位于draw()函数中。 draw()函数本质上就像while(true)循环一样,并且会一直调用自己,直到您停止运行代码。您在draw()

中声明了以下内容
var startx = 100;
var starty = 100;

这将导致每次调用draw时都会重置变量,这是所有时间。因此,变量看起来似乎没有变化。要解决此问题,只需声明并初始定义startxstarty以上setup(),这将使这些变量成为全局变量,并阻止draw()中发生的重新定义。