Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.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 如何使位图移动到中心?_Java - Fatal编程技术网

Java 如何使位图移动到中心?

Java 如何使位图移动到中心?,java,Java,我想让位图自动移向我的画布的中心。 我尝试了下面的代码,但它没有按我希望的那样工作 位图通常不直接指向中心 或者,位图可能到达屏幕的两个中心轴之一,然后转到中心 canvasWidth = canvas.getWidth(); canvasHeight = canvas.getHeight(); if(mBitmapX < canvasWidth/2){ mBitmapX = mBitmapX + mBitmapSpeed; }else{ mBitmapX = mBitma

我想让
位图
自动移向我的
画布的中心
。 我尝试了下面的代码,但它没有按我希望的那样工作 位图通常不直接指向中心 或者,位图可能到达屏幕的两个中心轴之一,然后转到中心

canvasWidth = canvas.getWidth();
canvasHeight = canvas.getHeight();
if(mBitmapX < canvasWidth/2){
    mBitmapX = mBitmapX + mBitmapSpeed;
}else{
    mBitmapX = mBitmapX - mBitmapSpeed;
}
if(mBitmapY < canvasHeight/2){
    mBitmapY = mBitmapY + mBitmapSpeed;
}else{
    mBitmapY = mBitmapY - mBitmapSpeed;
}
canvasWidth=canvas.getWidth();
canvasHeight=canvas.getHeight();
如果(mBitmapX<画布宽度/2){
mBitmapX=mBitmapX+mBitmapSpeed;
}否则{
mBitmapX=mBitmapX-mBitmapSpeed;
}
如果(mbitmay<画布高度/2){
mbitmay=mbitmay+mBitmapSpeed;
}否则{
mbitmay=mbitmay-mBitmapSpeed;
}

这将使您从任何起始位置向中心点移动一步距离mBitmapSpeed:

double x = /* canvas.getX() + */ canvas.getWidth() / 2 - mBitmapX;
double y = /* canvas.getY() + */ canvas.getHeight() / 2 - mBitmapY;
double dist = Math.sqrt(x*x + y*y);
double step = Math.min(dist, mBitmapSpeed);
if (dist != 0) {
    mBitmapX += x * step / dist;
    mBitmapY += y * step / dist;
}

注意,这假设画布坐标从(0,0)开始。如果没有,您需要将等效调用添加到注释掉的位。

欢迎使用SO。你已经清楚地描述了应该发生的事情。请描述实际发生的情况,这可能会帮助那些想回答你问题的人。您可以使用按钮来执行此操作