在连续函数中引用全局变量(p5.js)

时间:2016-08-11 21:29:11

标签: global-variables p5.js

我编码任何东西已经好几年了,现在我需要拿起p5.js.作为练习我试图制作一个简单的绘图程序 - 我希望我的程序默认为黑色绘制,当我点击屏幕一角的红色矩形时将颜色切换为红色。我有以下非常草率的代码(我知道鼠标按键与红色矩形不完全对齐,'绘图'机制不是最好的,等等。我只是乱搞它atm)

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' - 这可能是一个愚蠢的问题,但我承认被难倒了!我做错了什么?

1 个答案:

答案 0 :(得分:1)

命名变量时必须小心。具体来说,你不应该将它们命名为现有函数!

来自the Processing.js help articles

  

JavaScript的一个强大功能是其动态,无类型的特性。对于像Java这样的类型语言,以及因此处理,可以重用名称而不用担心歧义(例如,方法重载),Processing.js不能。没有进入JavaScript的内部工作,处理开发人员的最佳建议是不使用function / class / etc.处理中的名称作为变量名称。例如,名为line的变量看似合理,但它会导致内置于Processing和Processing.js中的类似命名的line()函数出现问题。

Processing.js是JavaScript,因此函数可以存储在变量中。例如,color变量是color()函数!因此,当您创建自己的color变量时,您将覆盖该变量,因此您将无法调用color()函数。

最简单的解决方法是将color变量的名称更改为myColor