我如何在 getArrow() 本地更改 if(ab) 中的 x 和 y 的值
how can i change the value of the x and y in if(ab) at getArrow() locally
public class Arrow {
protected static int x;
protected static int y;
public void setA(boolean a) {
this.a = a;
}
public void setB(boolean b) {
this.b = b;
}
public void setAb(boolean ab) {
this.ab = ab;
}
public Arrow( int x1, int y1) {
this.x=x1;
this.y=y1;
}
public double getySpeed(){
return (-ySpeed*Time+Time*Time/10);
}
public boolean getX(){
return x +Math.abs(xSpeed * Time)<canvasWidth-90;
}
public boolean getY(){
return y+getySpeed()<canvasHeight-110;
}
public Matrix getArrow(){
Matrix matrix = new Matrix();//1140,540
matrix.postRotate((int)getAngle(), arrowWidth/2, arrowHeight / 2);
if (a&&!ab) {
// here if i do sout(x) it will show 75 which is the value i gave it in the constructor
return a(x);
}
if(b&&!ab){
// here if i do sout(y) it will show 125 which is the value i gave it in the constructor
return (b(y));
}
if(ab){
x =x+(int) Math.abs(xSpeed * Time);
y = y+(int)getySpeed();
matrix.postTranslate(x,y );
}
return matrix;
}
public Matrix b(int yy ){
Matrix matrix = new Matrix();
matrix.postRotate((int)getAngle(), arrowWidth/2, arrowHeight / 2);
matrix.postTranslate(canvasWidth-90,yy );
return matrix;
}
public Matrix a(int xx ){
Matrix matrix = new Matrix();
matrix.postRotate((int)getAngle(), arrowWidth/2, arrowHeight / 2);
matrix.postTranslate(xx,canvasHeight-100 );
return matrix;
}
我试图让位图箭头停止离开屏幕,所以我计算出最大的 x 和 y 坐标,然后箭头移动直到到达这些坐标。
在getArrow()
中,在if(ab)
块,我认为我正在做的是改变x
和y
,但实际上,它们并没有改变.
- 它们保持与我在构造函数中赋予它们的值相同。
如何将 class 中的 x
和 y
更改为我给它们的值
if(ab)
在 getArrow()
谢谢 :*)
您遇到问题的原因是因为您已将 x
和 y
声明为 static
使它们成为 class 变量,这意味着它们的值将是所有对象都相同。
protected static int x;
protected static int y;
只需从他们的声明中删除术语 static
。
如有任何问题,请随时发表评论 doubt/issue。
public class Arrow {
protected static int x;
protected static int y;
public void setA(boolean a) {
this.a = a;
}
public void setB(boolean b) {
this.b = b;
}
public void setAb(boolean ab) {
this.ab = ab;
}
public Arrow( int x1, int y1) {
this.x=x1;
this.y=y1;
}
public double getySpeed(){
return (-ySpeed*Time+Time*Time/10);
}
public boolean getX(){
return x +Math.abs(xSpeed * Time)<canvasWidth-90;
}
public boolean getY(){
return y+getySpeed()<canvasHeight-110;
}
public Matrix getArrow(){
Matrix matrix = new Matrix();//1140,540
matrix.postRotate((int)getAngle(), arrowWidth/2, arrowHeight / 2);
if (a&&!ab) {
// here if i do sout(x) it will show 75 which is the value i gave it in the constructor
return a(x);
}
if(b&&!ab){
// here if i do sout(y) it will show 125 which is the value i gave it in the constructor
return (b(y));
}
if(ab){
x =x+(int) Math.abs(xSpeed * Time);
y = y+(int)getySpeed();
matrix.postTranslate(x,y );
}
return matrix;
}
public Matrix b(int yy ){
Matrix matrix = new Matrix();
matrix.postRotate((int)getAngle(), arrowWidth/2, arrowHeight / 2);
matrix.postTranslate(canvasWidth-90,yy );
return matrix;
}
public Matrix a(int xx ){
Matrix matrix = new Matrix();
matrix.postRotate((int)getAngle(), arrowWidth/2, arrowHeight / 2);
matrix.postTranslate(xx,canvasHeight-100 );
return matrix;
}
我试图让位图箭头停止离开屏幕,所以我计算出最大的 x 和 y 坐标,然后箭头移动直到到达这些坐标。
在getArrow()
中,在if(ab)
块,我认为我正在做的是改变x
和y
,但实际上,它们并没有改变.
- 它们保持与我在构造函数中赋予它们的值相同。
如何将 class 中的 x
和 y
更改为我给它们的值
if(ab)
在 getArrow()
谢谢 :*)
您遇到问题的原因是因为您已将 x
和 y
声明为 static
使它们成为 class 变量,这意味着它们的值将是所有对象都相同。
protected static int x;
protected static int y;
只需从他们的声明中删除术语 static
。
如有任何问题,请随时发表评论 doubt/issue。