我正在Android中制作一款游戏,而且我实际上拥有该游戏的主题:
public class ThreadEscribir extends Thread{
EscribirJuego pantalla;
boolean pintar=false;
SurfaceHolder sh;
Canvas canvas;
private static int FPS=10;
public ThreadEscribir(EscribirJuego v, SurfaceHolder surf){
pantalla=v;
sh=surf;
canvas=new Canvas();
}
public void run(){
//marcamos cada cuanto queremos que se actualice la pantalla
long ticksPS=1000/FPS;
long startTime;
long sleepTime;
while(pintar){
startTime=System.currentTimeMillis();
try{
canvas=sh.lockCanvas();
synchronized(pantalla.getHolder()){
pantalla.onDraw(canvas);
}
}
finally{
if (canvas!=null)
sh.unlockCanvasAndPost(canvas);
}
//hacemos que el tiempo de refresh de todos los smartphone sea el mismo
sleepTime=ticksPS-(System.currentTimeMillis()-startTime);
try{
if(sleepTime>0)
sleep(sleepTime);
else
sleep(10);
}catch (Exception ex){
}
}
}
public void estado(boolean e){
pintar=e;
}
}
这很完美,但是现在我需要一个用于我的 surfaceview 位图的线程,用户可以用手指移动,我不知道如何启动它。我使用了相同的代码对于ThreadEscribir,但更改了pantalla.onDraw(canvas)
for for for循环调用我必须移动的每个位图的ondraw
,但是我不能很好地工作,因为现在位图闪烁并留下痕迹。我怎么能做一个正确的线程?