0

我有一堂课如下:

public class Element extends Activity
{
public float mX;
    public float mY;
 public void animate(long elapsedTime) 
    {
        mX += mSpeedX * (elapsedTime / 20f);
        mY += mSpeedY * (elapsedTime / 20f);
        setmX(mX);
        setmY(mY);
        checkBorders();
    }
public void setmX(float mX) 
{
Log.i("this.mX","mY at setmX read is :"+this.mX );      **//Line 1**
        this.mX = mX;
    }
public float getmX() {
        Log.i("mX","mX in getmX read is :"+mX );    **//Line 2**
        return mX;
    }

    public void setmY(float mY) {

        this.mY = mY;
        Log.i("this.mY","mY at setmY read is :"+this.mY );  **//Line 3**
    }

    public float getmY() {
        Log.i("mY","mY in getY read is :"+mY );    **//Line 4**

        return mY;
    }
}

我还有一堂课

public class Panel extends SurfaceView implements SurfaceHolder.Callback
{
int x = 100;
    int y = 0;
public float xval;
    public float yval; 
@Override
    public boolean onTouchEvent(MotionEvent event) 
    {
        Element element = new Element();
        float x = event.getX();
        float y = event.getY();
        Log.i("x","x in panel is :"+x);
        //toast tos = new toast();

        xval = element.getmX();
        Log.i("xval","xval in playactivity obtained is :"+xval );   **//Line 5**
        yval = element.getmY();
        Log.i("yval","yval in playactivity obtained is :"+xval );    **//Line 6**
return super.onTouchEvent(event);
}

第 2、4、5 和 6 行将值显示为零。我不想这样做。下面是 logcat 图像。 在此处输入图像描述

我在访问说明符中犯了错误吗?

4

2 回答 2

1

我们很难在不知道mSpeedX和的情况下判断发生了什么mSpeedY。在进行数学运算之前,尝试将两者elapsedTime和变量都转换为浮点数。mSpeedX/Y浮点数学在 Java 中非常挑剔。还要确保该animate方法实际上正在被调用。

最后一点,我可能不应该提出这个问题,但这让我很生气。你应该真的,真的致力于你的代码一致性和风格。您的命名约定、换行符/同一行大括号约定和缩进习惯无处不在。如果您的编程风格不一致,代码的可读性和可维护性就会显着下降。

还有一件事:在将值分配给变量后,您不需要调用 setter 方法。您已经设置了 set/get 方法正在访问的同一个变量的值。祝你好运!

于 2012-09-29T00:54:57.377 回答
1
  • 您不应该在另一个类中创建 Activity 类的对象(在您的 Element 类中)。请仔细阅读应用程序基础知识
  • 尽管您在Element类中创建类的对象Panel,但您从未调用 setter 方法 setmX() 和 setmY() 来设置值。您直接调用返回默认值的 getter 方法。
于 2012-09-29T00:55:02.950 回答