2017-02-16 16 views
1

これはp5.js /処理で書かれています。彼らがしているので、あなたのstartxstarty変数が変更されていないようにそれはそうな理由がある古いポイント私の出発点はJavaScriptを変更していません

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 
    } 
} 
+0

'startx'と' starty'はいつ更新されませんか?ループの繰り返し中または後続の関数の実行中(後続の関数がスコープの問題を呼び出す場合) 'startx'にブレークポイントを設定し、実行中にデバッガで検査しましたか?あなたは特定の 'newx'、' newy'は実際に新しい価値を持っていますか? – scrappedcola

+0

'startx/y'の宣言を関数の外側のスコープに移動しました。現在、関数が呼び出されるたびにそれらをオーバーライドしています。 – Teemu

答えて

0

に更新するようになっているとき、私の問題は、すべての関数呼び出しは、出発点からのものであり、 draw()機能。 draw()関数は本質的にはwhile(true)ループのように動作し、コードの実行を停止するまで継続的に自身を呼び出します。あなたはdraw()の内部で、次の宣言:

var startx = 100; 
var starty = 100; 

これは、すべての時間である、変数は引き分けが呼び出されるたびにリセットされます。したがって、変数は変更されていないように見えます。これを解決するには、startxstartyを最初に宣言してsetup()より上に定義すると、これらの変数がグローバルになり、draw()で発生するこの再定義が防止されます。

関連する問題