控制飞机的移动

来源:互联网 发布:对外汉语教师网络兼职 编辑:程序博客网 时间:2024/05/01 10:06
/*
 * 控制飞机的移动
 * 游戏中的飞机会随用户单击键盘的动作而移动
 */
import 略
public class Ex003_01Activity extends Activity {// 飞机移动的速度private int speed = 12;/** Called when the activity is first created. */@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);// setContentView(R.layout.main);// 去掉窗口标题requestWindowFeature(Window.FEATURE_NO_TITLE);// 全屏显示getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);// 创建planeView组件final planeView planeview = new planeView(this);this.setContentView(planeview);planeview.setBackgroundResource(R.drawable.back);// 获取窗口管理器WindowManager windowManager = getWindowManager();Display display = windowManager.getDefaultDisplay();// 获得屏幕的宽和高int screenWith = display.getWidth();int screenHeight = display.getHeight();// 设置飞机的初始位置planeview.currentX = screenWith / 2;planeview.currentY = screenHeight - 60;// 为draw组件的键盘事件绑定监听器planeview.setOnKeyListener(new OnKeyListener() {@Overridepublic boolean onKey(View v, int keyCode, KeyEvent event) {// TODO Auto-generated method stubswitch (event.getKeyCode()) {case KeyEvent.KEYCODE_DPAD_DOWN:planeview.currentY += speed;break;case KeyEvent.KEYCODE_DPAD_UP:planeview.currentY -= speed;break;case KeyEvent.KEYCODE_DPAD_RIGHT:planeview.currentX += speed;break;case KeyEvent.KEYCODE_DPAD_LEFT:planeview.currentX -= speed;break;default:break;}// 重绘组件planeview.invalidate();return true;}});/*******************************************/planeview.setOnTouchListener(new OnTouchListener() {@Overridepublic boolean onTouch(View v, MotionEvent event) {// TODO Auto-generated method stubfloat X = event.getX();// float Y = event.getY();if (planeview.currentX < X) {planeview.currentX += speed;} else {planeview.currentX -= speed;}planeview.invalidate();return true;}});/****************************************** */}}// 自定义一个View,该View负责绘制游戏的飞机class planeView extends View {public float currentX;public float currentY;Bitmap plane;public planeView(Context context) {super(context);// TODO Auto-generated constructor stub// 定义飞机图片plane = BitmapFactory.decodeResource(context.getResources(),R.drawable.plane);setFocusable(true);}public void onDraw(Canvas canvas) {super.onDraw(canvas);// 创建画笔Paint p = new Paint();// 绘制飞机canvas.drawBitmap(plane, currentX, currentY, p);}}
下面我们来看下运行结果:

原创粉丝点击