根据条件停止处理中的mouseX跟踪

时间:2017-03-02 16:22:20

标签: processing

大家。我是新手,请原谅我的无知。我基本上想要根据条件停止注册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以记住光标离开红色区域时的坐标。

1 个答案:

答案 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中编写了动画教程。