如何解决当 mouseX 和 mouseY 坐标匹配约束时,新的叠加层不会保留 - 处理 3
void draw() {
boolean onTheMoon = false;
drawGrid(); // Old overlay animation.
if ((mouseX > 50) && (mouseX < 150) && (mouseY > 50) && (mouseY < 150)) {
onTheMoon = true;
}
if (onTheMoon)
{
do
{
moonLanding(); // New overlay method
}
while ((mouseX > 800) && (mouseX < 1000) && (mouseY > 400) && (mouseY < 700)); //Coordinates for new location on overlay
}
rocketShip(); // Calling my rocketship method. Rocket made of shapes using mouseX and mouseY
}
大家好,一旦 mouseX 和 mouseY 坐标匹配上面代码中顶部 if 语句的条件,我将尝试保持覆盖层运行。我现在面临的问题是当 mouseX 和 mouseY 远离旧覆盖出现的区域时,它会破坏动画。我正在测试不同的方法,但没有任何效果。有人有什么建议吗?
解决方法
根据您上面的评论,听起来 if
条件可以完成这项工作,并且不需要 do/while
循环。
你有这个布尔表达式:(mouseX > 800) && (mouseX < 1000) && (mouseY > 400) && (mouseY < 700)
。
您希望仅在满足此条件 not(!
) 时才调用 moonLanding()
:
void draw() {
boolean onTheMoon = false;
drawGrid(); // Old overlay animation.
if ((mouseX > 50) && (mouseX < 150) && (mouseY > 50) && (mouseY < 150)) {
onTheMoon = true;
}
if (onTheMoon)
{
if (!((mouseX > 800) && (mouseX < 1000) && (mouseY > 400) && (mouseY < 700))){
moonLanding(); // New overlay method
}
rocketShip(); // Calling my rocketship method. Rocket made of shapes using mouseX and mouseY
}
这相当于:
if (((mouseX > 800) && (mouseX < 1000) && (mouseY > 400) && (mouseY < 700)) == false){
moonLanding(); // New overlay method
}
如果您的程序需要更多鼠标/边界条件,我的一个建议是将这些条件封装在可重用的函数中。
例如:
void draw() {
boolean onTheMoon = false;
drawGrid(); // Old overlay animation.
if (isMouseOverTopLeft()) {
onTheMoon = true;
}
if (onTheMoon)
{
if (!isMouseOverBottomRight()){
moonLanding(); // New overlay method
}
rocketShip(); // Calling my rocketship method. Rocket made of shapes using mouseX and mouseY
}
boolean isMouseOverTopLeft(){
return isMouseOverRect(50,50,150,150);
}
boolean isMouseOverBottomRight(){
return isMouseOverRect(800,400,1000,700);
}
boolean isMouseOverRect(float x1,float y1,float x2,float y2){
return (mouseX >= x1 && mouseX <= x2) && (mouseY >= y1 && mouseY <= y2);
}
我很容易看到许多 isOverX 方法变得荒谬,但到那时你可以开始存储制作数据结构来保存边界、边界列表等。 这样做的目的是使代码更易于阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。