大家。我是新手,请原谅我的无知。我基本上想要根据条件停止注册mouseX。假设我有一个红色区域,在该区域内有一个黄色圆圈。当光标位于红色区域内时,我希望圆圈跟踪moseX坐标(同时保持y轴位置),但我也希望圆圈在光标离开区域时“记住”moseX坐标。
以下是我尝试过的代码:
void setup ()
{
size(500, 500);
}
void draw ()
{
background(255);
noStroke();
fill(#F05757);
quad(0, 0, 300, 0, 300, 200, 0, 200);
fill(#EDF057);
ellipse(motion(),100,40,40);
}
int motion ()
{
int currentXValue = 0;
int savedXValue = currentXValue;
if (mouseX > 0 && mouseX < 300 && mouseY > 0 && mouseY < 200)
{
currentXValue = mouseX;
savedXValue = currentXValue;
} else {}
return savedXValue;
}
当光标离开红色区域时,我不希望圆圈返回X = 0,我希望它保持最后存储的x坐标。我试图使变量currentXValue跟踪mouseX和saveXValue以记住光标离开红色区域时的坐标。
答案 0 :(得分:0)
您在currentXValue
循环中创建draw()
变量并将其设置为0.然后只有当鼠标位于红色区域内时才更改它。
您需要跟踪currentXValue
变量的先前值。换句话说,您需要在草图级别定义motion()
函数之外的变量:
int currentXValue = 0;
void setup ()
{
size(500, 500);
}
void draw ()
{
background(255);
noStroke();
fill(#F05757);
quad(0, 0, 300, 0, 300, 200, 0, 200);
fill(#EDF057);
ellipse(motion(), 100, 40, 40);
}
int motion ()
{
int savedXValue = currentXValue;
if (mouseX > 0 && mouseX < 300 && mouseY > 0 && mouseY < 200)
{
currentXValue = mouseX;
savedXValue = currentXValue;
} else {
}
return savedXValue;
}
现在currentXValue
将在draw()
功能的调用之间保持不变。另请注意,您不需要savedXValue
。
无耻的自我推销:我已经在处理可用的here中编写了动画教程。