嘗試計算觸點(dx,dy)之間的函數時,我在調用計算函數時收到錯誤。Android計算錯誤 - 解析幾何
這裏是我的移動功能:
public class Mice {
public Movement getRatio;
public static float MX;
public static float MY;
public Mice(float x, float y){
MX = x;
MY = y;
}
public void move(float dx, float dy){
float[] ratio = new float[2];
//below this comment is my error:
ratio = getRatio.getPath(dx, dy, MX, MY);
MX++;
MY = MY + ratio[1];
GameActivity.mpx = MX;
GameActivity.mpy = MY;
}
}
(MX,MY)是另一個點,其中一個目的是,現在在屏幕上。
這裏是我的計算功能:
public class Movement {
public float[] getPath(float dx, float dy, float mX, float mY){
float[] ratio = new float[2];
ratio[0] = 1;
float a;
float Ry1;
float Ry2;
float Rx1 = 1;
float Rx2 = 2;
a = (dy-mY)/(dx-mX);
Ry1=a*(Rx1-dx)+dy;
Ry2=a*(Rx2-dx)+dy;
ratio[1] = Math.abs(Ry1-Ry2);
return ratio;
}
}
我的onTouchEvent
@Override
public boolean onTouchEvent(MotionEvent event){
dx = event.getX();
dy = event.getY();
if(event.getAction()==1){
thread = new MiceThread(mice, mview, dx, dy);
thread.start();
}
return true;
}
這裏是我的線程:
public class MiceThread extends Thread {
private Mice gameMice;
private MiceView gameView;
private float x;
private float y;
public MiceThread(Mice theMice, MiceView theView, float x, float y){
this.gameMice = theMice;
this.gameView = theView;
this.x = x;
this.y = y;
}
public void run(){
while(1<2){
this.gameMice.move(x, y);
this.gameView.postInvalidate();
try
{
MiceThread.sleep(5);
}
catch (InterruptedException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
我得到其中第一塊指定的錯誤的代碼。
謝謝!
什麼錯誤? – kosa
'我得到的錯誤,其中......'完全無奈的答案......添加完整的logcat –
錯誤是(Logcat): 05-16 18:04:10.105:E/AndroidRuntime(19380):java.lang .NullPointerException – arielschon12