Java 如何在Android Studio中设置画布边界?(不让形状超出屏幕边缘)
我面临着这个问题: 我需要在我未来的考试之前制作一个游戏,其中有一些圆形以恒定速度移动,其中一个由用户控制。 现在,我已经创建了一个可以移动的圆圈,如果你触摸它(为了让事情开始并保持代码简单,因为我不太擅长游戏编程)。 问题是,当我将圆圈移动到手机边缘时,圆圈会从屏幕上消失,如果圆心经过手机边缘,则无法将其取回 我正在寻找一种将圆圈保持在画布大小(电话屏幕)内的解决方案,但除了我在onDraw()方法中编写的这个解决方案外,找不到其他好的解决方案:Java 如何在Android Studio中设置画布边界?(不让形状超出屏幕边缘),java,android,xml,android-studio,android-canvas,Java,Android,Xml,Android Studio,Android Canvas,我面临着这个问题: 我需要在我未来的考试之前制作一个游戏,其中有一些圆形以恒定速度移动,其中一个由用户控制。 现在,我已经创建了一个可以移动的圆圈,如果你触摸它(为了让事情开始并保持代码简单,因为我不太擅长游戏编程)。 问题是,当我将圆圈移动到手机边缘时,圆圈会从屏幕上消失,如果圆心经过手机边缘,则无法将其取回 我正在寻找一种将圆圈保持在画布大小(电话屏幕)内的解决方案,但除了我在onDraw()方法中编写的这个解决方案外,找不到其他好的解决方案: if(位置getHeight()-cRad_1
if(位置getHeight()-cRad_1){
posY=getHeight()-cRad_1;
帆布画圈(posX、posY、cRad_1、paintCircle);
返回;
}否则{
帆布画圈(posX、posY、cRad_1、paintCircle);
}
if(posXgetWidth()-cRad_1){
posX=getWidth()-cRad_1;
帆布画圈(posX、posY、cRad_1、paintCircle);
返回;
}否则{
帆布画圈(posX、posY、cRad_1、paintCircle);
}
还使用onTouchEvent()来移动圆。
正如你所看到的,代码并不短,如果我需要复制它以获得一个圆的反弹,那么我猜它将不实用。。。
还有一个bug,当我拿着并移动一个圆,经过第二个圆(现在只画了两个圆)时,它不知怎么地“抓住”了它。如果我从另一个圆圈开始,它不会这样做
也许我做得不对?也许如果我开始创建一个具有速度和随机矢量方向的形状,圆圈会自动在屏幕上反弹
希望有这么好的人来回答这个问题。
谢谢!:) 将其用作x和y的直径。观看类似视频并管理x和y。
if (posY < cRad_1) {
posY = cRad_1;
canvas.drawCircle(posX, posY, cRad_1, paintCircle);
return;
} else {
canvas.drawCircle(posX, posY, cRad_1, paintCircle);
}
if (posY > getHeight() - cRad_1) {
posY = getHeight() - cRad_1;
canvas.drawCircle(posX, posY, cRad_1, paintCircle);
return;
} else {
canvas.drawCircle(posX, posY, cRad_1, paintCircle);
}
if (posX < cRad_1) {
posX = cRad_1;
canvas.drawCircle(posX, posY, cRad_1, paintCircle);
return;
} else {
canvas.drawCircle(posX, posY, cRad_1, paintCircle);
}
if (posX > getWidth() - cRad_1) {
posX = getWidth() - cRad_1;
canvas.drawCircle(posX, posY, cRad_1, paintCircle);
return;
} else {
canvas.drawCircle(posX, posY, cRad_1, paintCircle);
}