我有 2 个圆形按钮在一个圆圈中旋转,我需要程序能够识别我在圆圈内单击,其中一个按钮用于开始,一个用于退出。
这是我的代码顶部声明的相关变量
double angleStart=1.5*pi;
double angleQuit=0.5*pi;
int radius=120;
int centerX=300;
int centerY=160;
float startPosX = (float) (centerX + Math.sin(angleStart)*radius);
float startPosY = (float) (centerY + Math.cos(angleStart)*radius);
float quitPosX = (float) (centerX + Math.sin(angleQuit)*radius);
float quitPosY = (float) (centerY + Math.cos(angleQuit)*radius);
图像/按钮在 startPosX/Y 和 quitPosX/Y 处绘制
这是使按钮旋转的代码
int posX = Mouse.getX();
int posY = Mouse.getY();
double constant=0.002*pi;
startPosX = (float) (centerX + Math.sin(angleStart)*radius);
startPosY = (float) (centerY + Math.cos(angleStart)*radius);
quitPosX = (float) (centerX + Math.sin(angleQuit)*radius);
quitPosY = (float) (centerY + Math.cos(angleQuit)*radius);
angleStart+=constant;
angleQuit+=constant;
if (angleStart>=2*pi){
angleStart-=2*pi;
}
if (angleQuit>=2*pi){
angleQuit-=2*pi;
}
同样如您所见,PosX 和 PosY 是鼠标坐标
现在最后这里是决定按钮是否被点击的代码
//start button
float startXDist=posX-(startPosX+50);
float startYDist=posY-(startPosY+50);
float startDist=(float) Math.sqrt((startXDist*startXDist)+(startYDist*startYDist));
if(startDist<=50){
if(Mouse.isButtonDown(0)){
sbg.enterState(1);
}
}
//quit button
float quitXDist=posX-(quitPosX+50);
float quitYDist=posY-(quitPosY+50);
float quitDist=(float) Math.sqrt((quitXDist*quitXDist)+(quitYDist*quitYDist));
if(quitDist<=50){
if(Mouse.isButtonDown(0)){
System.exit(0);
}
}
当我单击按钮时没有运行(通常)发生,但是如果我在屏幕上随机发送垃圾邮件,有时会碰到程序在我单击按钮时感知到的区域,提前感谢您的帮助
额外注意 +50 在那里,因为按钮的半径为 50px
恐怕我还不能发布图片,但这里有一个截图链接 http://s2.postimg.org/h9ykqpd5l/Capture6.png
小豆也是一个临时图形,直到我自己制作一个