1

何かをコーディングしてから何年も経ちましたが、今は p5.js を取り上げる必要があります。練習として、単純な描画プログラムを作成しようとしていました.デフォルトで黒で描画し、画面の隅にある赤い四角形をクリックすると色を赤に切り替えたい. 私は次の非常にずさんなコードを持っていました (マウスを押すと赤い四角形と正確に一致しないこと、「描画」メカニズムが最適ではないことなどを知っています。私はそれをいじっているだけです)

function setup() {
	createCanvas(600, 600);
	fill ('red'); 
  	rect(570,20,5,5);
  //creates red rectangle at top right corner of screen

}
var color = 0;
function mousePressed(){
	if ( mouseX > 570) {
  		if( mouseY > 20){
  			color = 4;
  			ellipse (10,20,50,50);
  		}
  		
  	}
}
function draw() {
	
  stroke(color);
  if (mouseIsPressed) {
  	ellipse(mouseX, mouseY, 1, 1)
  	//creates colored dot when mouse is pressed
  } 
}

function keyTyped(){
	if (key === 'c'){
		clear();
	}
}

「color」変数を使用せず、代わりにストロークを 0 に設定すると、黒で十分に描画できます。そして、 mousePressed 関数が機能しているようです-長方形を押すと、テストのために入れた楕円が描画されます。ただし、描画関数で var 'color' を参照できないようです。これはおそらくばかげた問題ですが、困惑していることは認めます。私は何を間違っていますか?

4

1 に答える 1

1

変数に名前を付けるときは注意が必要です。具体的には、既存の関数と同じ名前を付けるべきではありません!

Processing.js のヘルプ記事から:

JavaScript の強力な機能の 1 つは、その動的で型のない性質です。Java のような型付き言語、したがって Processing はあいまいさ (メソッドのオーバーロードなど) を恐れずに名前を再利用できますが、Processing.js はできません。JavaScript の内部動作に入ることなく、Processing 開発者への最善のアドバイスは、関数/クラス/etc を使用しないことです。変数名としての処理からの名前。たとえば、line という名前の変数は合理的に見えるかもしれませんが、Processing および Processing.js に組み込まれている同様の名前の line() 関数で問題が発生します。

Processing.js は JavaScript であるため、関数を変数に格納できます。たとえば、color変数はcolor()関数です! したがって、独自のcolor変数を作成すると、それが上書きされるため、関数を呼び出すことができなくなりcolor()ます。

最も簡単な修正は、color変数の名前をmyColor.

于 2016-08-12T12:23:07.980 に答える