边做游戏边学android—7(塔防②创建目标)
来源:互联网 发布:ubuntu卸载自带输入法 编辑:程序博客网 时间:2024/05/17 06:37
创建目标类、代码如下:
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 }}
运行结果如下:
0 0
- 边做游戏边学android—7(塔防②创建目标)
- 边做游戏边学android—6(塔防①)
- 边做游戏边学android—2(飞机大战①创建飞机)
- 边做游戏边学android—3(飞机大战②飞机移动)
- 边做游戏边学android—1(猜数字游戏)
- 边做游戏边学android—前言
- 边做游戏边学android—4(飞机大战③添加敌机和碰撞检测)
- 边做游戏边学android—5(飞机大战④子弹发射和碰撞检测)
- 打算做一个塔防游戏
- 做一个简单的塔防游戏
- 塔防游戏《android防御战》上线了
- 三国塔防游戏android源码
- 魔兽塔防游戏android源码
- (译)如何做一个塔防游戏(cocos2d 2012-8-17)
- android 塔防游戏汇总 及android 游戏开发索引
- android 塔防游戏汇总 及android 游戏开发索引
- 3D塔防游戏实现 2.1 创建炮塔(Feekood语言)
- 塔防游戏
- Activity类
- Container With Most Water
- Aurora协议调研
- ios (推送)之本地推送
- 【android】只有小时和分钟的弹出式时间选择器
- 边做游戏边学android—7(塔防②创建目标)
- hiho一下 第四十八周题目1 : 拓扑排序·二
- cocos关于内存方面的文章
- Android之异步线程原理
- 基于v4l2的摄像头驱动笔记
- poj 2480 Longge's problem 积性函数性质+欧拉函数
- B/S模式实现批量打包apk
- REST聊天应用升级——妖哲开始打通后端6
- hdu 1789 排序+数组标记