我画船左右移动的时候 出现多个重复 不知道为什么!package com.example.asd;import com.example.asd.R.drawable;import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.view.MotionEvent;
import android.view.SurfaceHolder;
import android.view.SurfaceHolder.Callback;
import android.view.SurfaceView;public class SurfaceTest extends SurfaceView implements Callback,Runnable{
private SurfaceHolder sfh;

private Bitmap boatPic,enemyPic,bombPic,boomPic;

private int x=100,y=100;

private Thread thread;

private boolean flag,flag1;

private int enemyX=300,enemyY=300;

private int boatWidth,boatHeight,screenHeight,screenWidth;

private Canvas mCanvas;
public SurfaceTest(Context context) {
super(context);
sfh=this.getHolder();
sfh.addCallback(this);
boatPic=BitmapFactory.decodeResource(getResources(), drawable.ship1);

enemyPic=BitmapFactory.decodeResource(getResources(), drawable.qiant);

boomPic=BitmapFactory.decodeResource(getResources(), drawable.boom);

bombPic=BitmapFactory.decodeResource(getResources(), drawable.b2);

boatWidth=boatPic.getWidth();
boatHeight=boatPic.getHeight();
}
public void onDraw(){
mCanvas=sfh.lockCanvas();
Paint paint=new Paint();
paint.setColor(Color.RED);
/**
 * 调用画船;
 */
drawBoatPic(mCanvas,paint);
// drawEnemy(mCanvas,paint);
// mCanvas.drawCircle(100, 100, 50, paint);
sfh.unlockCanvasAndPost(mCanvas);

}
/**
 * 绘制画船;
 * @param canvas
 * @param paint
 */
public void drawBoatPic(Canvas canvas,Paint paint){ canvas.drawBitmap(boatPic, x, y, paint); }
/**
 * 绘制地敌船;
 */
/* public void drawEnemy(Canvas canvas,Paint paint){
canvas.drawBitmap(enemyPic,enemyX,enemyY,paint);

}*/
/**
 * thread对象中的构造函数  一开始就被调用;
 */
public void run() {
while(flag){
onDraw();
}
}

public boolean onTouchEvent(MotionEvent event){
super.onTouchEvent(event);
int temptyX=(int)event.getX();
int temptyY=(int)event.getY();
 if(temptyY<y){
 if(temptyX<screenWidth/2&&temptyX>boatWidth/2){
 x-=5;
 }else if(temptyX>screenWidth/2&&temptyX<screenWidth-boatWidth/2){
 x+=5;
 
 }else if(temptyY>y){
 createBullet();
 
 }
 
 }
 flag=true;
return flag; }
private void createBullet() {
// TODO Auto-generated method stub

}
public void surfaceCreated(SurfaceHolder arg0) {
flag=true; screenWidth=getWidth();
screenHeight=getHeight();
thread=new Thread(this);
thread.start();

} public void surfaceChanged(SurfaceHolder arg0, int arg1, int arg2, int arg3) {
// TODO Auto-generated method stub

} public void surfaceDestroyed(SurfaceHolder arg0) {
flag=false;

}

}
androidimportthreadcallback