Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/198.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在Android Studio中设置画布边界?(不让形状超出屏幕边缘)_Java_Android_Xml_Android Studio_Android Canvas - Fatal编程技术网

Java 如何在Android Studio中设置画布边界?(不让形状超出屏幕边缘)

Java 如何在Android Studio中设置画布边界?(不让形状超出屏幕边缘),java,android,xml,android-studio,android-canvas,Java,Android,Xml,Android Studio,Android Canvas,我面临着这个问题: 我需要在我未来的考试之前制作一个游戏,其中有一些圆形以恒定速度移动,其中一个由用户控制。 现在,我已经创建了一个可以移动的圆圈,如果你触摸它(为了让事情开始并保持代码简单,因为我不太擅长游戏编程)。 问题是,当我将圆圈移动到手机边缘时,圆圈会从屏幕上消失,如果圆心经过手机边缘,则无法将其取回 我正在寻找一种将圆圈保持在画布大小(电话屏幕)内的解决方案,但除了我在onDraw()方法中编写的这个解决方案外,找不到其他好的解决方案: if(位置getHeight()-cRad_1

我面临着这个问题: 我需要在我未来的考试之前制作一个游戏,其中有一些圆形以恒定速度移动,其中一个由用户控制。 现在,我已经创建了一个可以移动的圆圈,如果你触摸它(为了让事情开始并保持代码简单,因为我不太擅长游戏编程)。 问题是,当我将圆圈移动到手机边缘时,圆圈会从屏幕上消失,如果圆心经过手机边缘,则无法将其取回

我正在寻找一种将圆圈保持在画布大小(电话屏幕)内的解决方案,但除了我在onDraw()方法中编写的这个解决方案外,找不到其他好的解决方案:

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);
        }