gpt4 book ai didi

java - 如何在处理中使用 mousePressed 处理灯光?

转载 作者:行者123 更新时间:2023-12-04 09:45:57 25 4
gpt4 key购买 nike

我正在制作有关处理的动画。然后,我有一个关于灯的问题。通常,我的代码比较长。但是,我制作了一个简单的代码,对初学者也很有用。

void setup()
{
size(400, 400, P3D);
noStroke();
}

void draw()
{
background(0);
if (mousePressed) { // lights should work if the mouse pressed on the sphere
lights(); // It should continue till press again on the sphere
} // If the mouse pressed again on the sphere, lights should close
translate(200,200,0); // translate the sphere to the middle of window
sphere(100); // making a sphere for see ligts
}

所以,正如你在评论中看到的那样。如果鼠标按下球体,灯应该工作,它应该继续工作,直到鼠标再次按下球体。然后,如果鼠标按下球体,它应该关闭灯。它应该一次又一次地继续工作。如果你知道怎么做。不客气。谢谢。

最佳答案

您需要有一个变量来保持灯的状态并在灯关闭时将其打开或在灯打开时将其关闭。

这样做之后,使用 mousePressed在 if 语句中可能会产生一些问题,因为如果点击速度不够快(也许你按下的时间太长),它会打开然后关闭灯,因此看起来它从未打开过。
为了避免这种情况,我建议 using mouseReleased()功能。
这是最终的代码:

boolean isOn = false;    // variable keeping the state of the light

void setup()
{
size(400, 400, P3D);
noStroke();
}

void draw()
{
background(0);
if (isOn) // checks the state in which the light should be
lights();
translate(200,200,0); // translate the sphere to the middle of window
sphere(100); // making a sphere for see ligts
}

void mouseReleased() { // this function is automatically called in draw method
if (isOn) //after a click the state of the light is inverted
isOn = false;
else isOn = true;
}

无论如何,如果由于某种原因您需要专门使用 mousePressed函数她的一些代码也有效:
void draw()
{
background(0);
if (mousePressed) { // lights should work if the mouse pressed on the sphere
if (isOn)
isOn = false;
else isOn = true;
delay(200); // delay added to minimize the problem explained above
} // If the mouse pressed again on the sphere, lights should close
if (isOn)
lights();
translate(200,200,0); // translate the sphere to the middle of window
sphere(100); // making a sphere for see ligts
}

关于java - 如何在处理中使用 mousePressed 处理灯光?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62110218/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com