4
我想檢查線和圓之間的碰撞,如果圓擊中線,它會工作改變一個布爾值爲真,一旦它沒有觸及,它會改變它回到錯誤。我正在使用畫布和表面視圖。檢查線和一個圓圈在帆布的碰撞android
這裏是我的檢查碰撞的代碼,沒有工作,在錯誤結束了:
@Override
public void run() {
while(runnable)
{
if(!holder.getSurface().isValid()){
continue;
}
Canvas mCanvas = holder.lockCanvas();
update(mCanvas);
values = new Values(mCanvas);
createPaints();
drawBackground(mCanvas);
drawObjects(mCanvas);
holder.unlockCanvasAndPost(mCanvas);
}
}
現在的碰撞中更新處理:
private void update(Canvas c) {
ball.update(c, checkLinesCollision(values.level1, ball.getX(), ball.getY()));
//takes a canvas, and a boolean
}
boolean checkLinesCollision(float[] f,float x,float y){
int c = 0;
for(int i = 0; i < f.length; i+=4){
float x1 = f[i];
float y1 = f[i+1];
float x2 = f[i+2];
float y2 = f[i+3];
if (x> x1 && x<x2 && y>y1 && y>y2){
c++;
}
}
if(c>0){return true;}else{return false;}
}
的水平值
float yLow = c.getHeight()-c.getHeight()/4;
level1 = new float[]{0,yLow,c.getWidth(),yLow,
40,c.getHeight()/2,300,c.getHeight()/2};
球更新功能:
public void update(Canvas c, boolean b) {
if(b){
dy=-dy;
b = false;
}
y -= dy;
dy--;
}
現在根據logcat問題是在主要的更新功能。
我認爲我使用了錯誤的功能,我能做些什麼來解決它?
謝謝!
logcat說的是什麼? – 0gravity 2012-07-31 03:58:22
@ 0gravity,我有Android運行時問題,確切的地方是\t \t ball.update(c,checkLinesCollision(values.level1,ball.getX(),ball.getY())); – Baruch 2012-07-31 04:13:22