我编码任何东西已经好几年了,现在我需要拿起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' - 这可能是一个愚蠢的问题,但我承认被难倒了!我做错了什么?
答案 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
。