Android学习之控制飞机移动
来源:互联网 发布:h3c 3600端口acl 编辑:程序博客网 时间:2024/05/03 17:37
效果图:
PlaneView.java
import android.content.Context;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.graphics.Canvas;import android.graphics.Paint;import android.view.View;public class PlaneView extends View{ public float currentX,currentY; Bitmap plane; //创建画笔 Paint p = new Paint(); public PlaneView(Context context) { super(context); plane = BitmapFactory.decodeResource(context.getResources(), R.drawable.plane); setFocusable(true); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); canvas.drawBitmap(plane, currentX, currentY, p); }}
PlaneGame.java
import android.app.Activity;import android.os.Bundle;import android.util.DisplayMetrics;import android.view.Display;import android.view.KeyEvent;import android.view.View;import android.view.View.OnKeyListener;import android.view.WindowManager;public class MainActivity extends Activity{ //定义飞机的移动速度 private int speed = 10; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //全屏显示,不显示系统的状态栏 getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); /* *创建PlaneView组件 *这里可以传入this因为context是activity的父类 */ final PlaneView planeView = new PlaneView(this); setContentView(planeView); //获取窗口管理器 WindowManager windowManager = getWindowManager(); Display display = windowManager.getDefaultDisplay(); DisplayMetrics displayMetrics = new DisplayMetrics(); //获取屏幕宽和高 display.getMetrics(displayMetrics); //设置飞机的初始位置 planeView.currentX = displayMetrics.widthPixels / 2; planeView.currentY = displayMetrics.heightPixels - 40; //为draw组件键盘事件绑定监听器 planeView.setOnKeyListener(new OnKeyListener() { @Override public boolean onKey(View v, int keyCode, KeyEvent event) { //获取由哪个键触发的事件 switch (event.getKeyCode()) { //控制飞机下上左右移 case KeyEvent.KEYCODE_S: planeView.currentY += speed; break; case KeyEvent.KEYCODE_W: planeView.currentY -= speed; break; case KeyEvent.KEYCODE_A: planeView.currentX -= speed; break; case KeyEvent.KEYCODE_D: planeView.currentX += speed; break; default: break; } //通知planeView组件重绘 planeView.invalidate(); return true; } }); }}
这里飞机的上下左右移动方向的加减参照:
飞机图标:
0 0
- Android学习之控制飞机移动
- 控制飞机的移动
- 控制飞机移动
- J2ME 2D小游戏入门之控制飞机移动
- J2ME 2D小游戏入门之控制飞机移动
- Python游戏系列之三_控制飞机移动
- Android使用键盘控制小飞机的移动
- unity学习之飞机大战制作 关键点(五) 设置飞机的控制
- 基于cocos2dx的飞机大战学习[三]-为英雄添加飞行帧动作并控制飞机移动
- 键盘事件的监听-控制飞机移动
- J2ME 2D小游戏入门之旅(三) 控制飞机的移动
- J2ME 2D小游戏入门之旅(三)控制飞机移动
- 疯狂Android讲义(1a)-基于监听的事件处理-控制飞机移动
- 飞机大战之四:飞机跟随触屏手指移动
- 微信飞机大战学习之android横竖屏
- unity学习手记之控制角色移动
- unity学习之飞机大战制作 关键点(三) 设置子弹的生成和移动
- android开发之绘制View,并且重写OnTouchEvent事件使飞机移动
- mycat2.0源码分析02-客户端发送认证报文
- beego 如何自定error
- Java NIO的非阻塞式网络通讯
- 登录注册案例(集合实现)
- tomcat内存溢出解决,java.lang.OutOfMemoryError: PermGen space
- Android学习之控制飞机移动
- sdutacm-期末考试 素数链表
- Linux命令基础2-ls命令
- fast rcnn论文
- oracle不同版本字符集手稿
- 手机卫士03
- Sql语句中的DDL、DML、DCL的介绍
- form 表单input hidden 传值提交(框架angular js)
- array_change_key_case函数