2016-11-11 10 views
0

最近ProcessingJSライブラリを使用してJavascriptでコーディングを開始しました。私はカーンアカデミーでJSコースを修了しました。私はxとyが選択された領域にあるとき、関数を持っています。ループを停止し、xとyを移動し、score1Xとscore1Yを0に移動してループを開始する必要があります。 score1Xとscore1Yは動いていません。この関数はdraw =関数で呼び出されます。どうもありがとう!Javascriptで変数が変更されない

var CreatePoint = function(score1X, score1Y) { 
    if (x >= score1X - 10 && x <= score1X + 10 && y >= score1Y - 10 && y <= score1Y + 10){ 
     noLoop();  
     points ++; 
     x -= 10; 
     y -= 10; 
     score1X = 0; 
     score1Y = 0; 
     loop(); 
    } 
    else if (points <= 0) { 
     ellipse(score1X, score1Y, 20, 20); 
    } 
}; 

draw = function() {  
    fill(255, 255, 255); 
    text(points + "/5", 20, 20); 
    CreatePoint(score1X, score1Y); 
    CreatePoint(score2X, score2Y); 
    CreatePoint(score3X, score3Y); 
    CreatePoint(score4X, score4Y); 
    CreatePoint(score5X, score5Y); 
}; 
+0

loop()関数を投稿できますか? –

+0

私はメインポストに追加しました。 –

+0

あなたの 'draw()'関数はありますが、 'loop()'はどこにありますか? –

答えて

0

javascriptパラメータが参照渡しされるため、関数パラメータ変数に代入することで呼び出し元の変数に影響を与えることはできません。呼び出し元が変数に割り当てることができる新しい値を返す必要があります。

var CreatePoint = function(score1X, score1Y) { 
    if (x >= score1X - 10 && x <= score1X + 10 && y >= score1Y - 10 && y <= score1Y + 10){ 
     noLoop();  
     points ++; 
     x -= 10; 
     y -= 10; 
     score1X = 0; 
     score1Y = 0; 
     loop(); 
    } 
    else if (points <= 0) { 
     ellipse(score1X, score1Y, 20, 20); 
    } 
    return [score1X, score1Y]; 
}; 

draw = function() {  
    fill(255, 255, 255); 
    text(points + "/5", 20, 20); 
    var res = CreatePoint(score1X, score1Y); 
    score1X = res[0]; 
    score1Y = res[1]; 
    res = CreatePoint(score2X, score2Y); 
    score2X = res[0]; 
    score2Y = res[1]; 
    res = CreatePoint(score3X, score3Y); 
    score3X = res[0]; 
    score3Y = res[1]; 
    res = CreatePoint(score4X, score4Y); 
    score4X = res[0]; 
    score4Y = res[1]; 
    res = CreatePoint(score5X, score5Y); 
    score5X = res[0]; 
    score5Y = res[1]; 
}; 
+0

ありがとうございましたが、ループ全体が機能しなくなりました。私はprintln()を使用しました。問題がどこにあるかを知ることができます。 score1X、score1Yなどは定義されていませんでした。私は、プログラムの始めにランダムに(25、375)宣言したことを忘れていました。それは問題ですか? –

+0

グローバル変数として宣言した場合、なぜ定義されていないのか分かりません。関数でそれらを再割り当てしてもそれは変わりません。 – Barmar

関連する問題