您的位置:首页 > 移动开发 > Android开发

边做游戏边学android—7(塔防②创建目标)

2015-06-03 00:08 288 查看
创建目标类、代码如下:

package com.example.object;

import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;

import com.example.tafang.R;

public class Target {

private Resources resources;
private Bitmap target;
private float object_x;
private float object_y;
private float object_width;
private float object_height;
private float middle_x;
private float middle_y;
private Paint paint;
private float screen_width;
private float screen_height;

public Target(Resources resources){
this.resources = resources;
initBitmap();
this.paint = new Paint();
paint.setColor(Color.BLACK);
object_x = 20;
object_y = 20;
}

public void getScreenWH(float screen_width,float screen_height){
this.screen_width = screen_width;
this.screen_height = screen_height;
object_x = this.screen_width/2;

}

private void initBitmap(){
target = BitmapFactory.decodeResource(resources, R.drawable.enemy);
object_width = target.getWidth();
object_height = target.getHeight();
middle_x = object_x + object_width/2;
middle_y = object_y + object_height/2;
}

public void drawSelf(Canvas canvas){
if(object_y < screen_width){
canvas.save();
canvas.rotate(90, object_x, object_y);
canvas.clipRect(object_x, object_y, object_x + object_width , object_y + object_height);
canvas.drawBitmap(target, object_x, object_y, paint);

canvas.restore();
}

}

public float getMiddle_x() {
return middle_x;
}

public void setMiddle_x(float middle_x) {
this.middle_x = middle_x;
this.object_x = middle_x - this.object_width/2;
}

public float getMiddle_y() {
return middle_y;
}

public void setMiddle_y(float middle_y) {
this.middle_y = middle_y;
this.object_y = middle_y - this.object_height/2;
}

}


创建gameview类

package com.example.view;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.view.SurfaceHolder;
import android.view.SurfaceHolder.Callback;
import android.view.SurfaceView;

import com.example.object.Target;
import com.example.tafang.MainActivity;

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

private Target target;
private Thread thread;
private float screen_width;
private float screen_height;
private Canvas canvas;
private MainActivity main;
private SurfaceHolder sfh;

public GameView(Context context) {
super(context);
// TODO Auto-generated constructor stub
this.main = (MainActivity)context;
sfh = this.getHolder();
target = new Target(getResources());
sfh.addCallback(this);
thread = new Thread(this);
}

public void initObject(){

}

public void drawSelf(){
try{
canvas = sfh.lockCanvas();
canvas.drawColor(Color.WHITE);
target.drawSelf(canvas);
} finally{
if(canvas != null){
sfh.unlockCanvasAndPost(canvas);
}
}

}

@Override
public void run() {
// TODO Auto-generated method stub
int i=0;
while (true) {
if(i == 3){
initObject();
i=0;
}
drawSelf();
target.setMiddle_y(target.getMiddle_y() + 10);
if(target.getMiddle_y()>screen_height){
target.setMiddle_y(0);
}
i ++;
try {
Thread.sleep(200);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

}

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

}

@Override
public void surfaceCreated(SurfaceHolder arg0) {
// TODO Auto-generated method stub
screen_height = this.getHeight();
screen_width = this.getWidth();
target.getScreenWH(screen_width, screen_height);
if(thread.isAlive()){
thread.start();
} else {
thread = new Thread(this);
thread.start();
}

}

@Override
public void surfaceDestroyed(SurfaceHolder arg0) {
// TODO Auto-generated method stub

}

}


运行结果如下:
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: