1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > android飞机大战功能 安卓飞机大战(二) SurfaceView实现自制背景

android飞机大战功能 安卓飞机大战(二) SurfaceView实现自制背景

时间:2022-12-24 03:25:55

相关推荐

android飞机大战功能 安卓飞机大战(二) SurfaceView实现自制背景

用SurfaceView写一个自制的背景图,并且可以移动,加上安卓飞机大战(一)中的BackgroundManager类,可以直接使用

GameView代码:

public class GameView extends SurfaceView implements SurfaceHolder.Callback,Runnable{

private SurfaceHolder hd=null;

private Canvas canvas=null;

private BackgroundManager backgroundmanager;

public GameView(Context context) {

super(context);

this.setFocusable(true);

hd=this.getHolder();

hd.addCallback(this);

}

public void run() {

while(isrunning){

mydraw();

try {

Thread.sleep(100);//每100s刷新一次屏幕

} catch (InterruptedException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

public void mydraw(){

try{

if(hd!=null){

canvas=hd.lockCanvas();

canvas.drawColor(Color.BLUE);

backgroundmanager.drawbackground(canvas);

}catch(Exception e){

e.printStackTrace();

}finally{

if(canvas!=null)

hd.unlockCanvasAndPost(canvas);

}

}

public void surfaceChanged(SurfaceHolder arg0, int arg1, int arg2, int arg3) {

// TODO Auto-generated method stub

}

public void surfaceCreated(SurfaceHolder arg0) {

thread=new Thread(this);//定义一个新线程

thread.start();

backgroundmanager=new BackgroundManager(this);

}

@Override

public void surfaceDestroyed(SurfaceHolder arg0) {

}

MainActivity 代码:

public class MainActivity extends Activity {

private GameView gameview=null;

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

gameview=new GameView(this);

setContentView(gameview);

}

这样就能实现背景的循环移动了,layout中的xml文件直接不用管。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。