java - 当 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)
.
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 方法变得可笑,但是到那时你可以开始存储创建一个数据结构来保存边界和边界列表等。这个想法是使代码更易于阅读。
推荐阅读
- c++ - 代码崩溃。虽然将 c char 数组传递给使用 std::string 捕获的函数
- flutter - 在“状态”中添加“小部件”作为字段时出错
” 飘飘然的课堂 - mysql - 编写一个可以使用 2 个数据库的应用程序?
- android - 在 Android Studio 中构建应用程序时出现 Gradle 错误
- c# - zkemKeeper 无法在 c# 桌面应用程序中触发事件
- .net - 如何获取对象属性及其值的真实列表
- arrays - 如何将此对象转换为数组并在 React 中通过键访问值?
- .htaccess - mod_rewrite 公共应用程序文件到子目录
- json - 如何从 Arduino IDE 中的字符串变量解析 json 字符串
- client-server - 可靠的客户端-服务器架构,切换到发布-订阅?