整体实现思路
通过两张背景图片实现背景滚动,同时做出能根据用户触摸位置不同而改变位置的飞机,能够不停地射出子弹,Boss同理,Boss移动方式随机,同时添加小飞机以增强游戏的表现力,外加例如激光之类的特殊游戏模块来增强游戏的可玩性,最后添加主界面和启动界面来增强游戏的整体性。
如何绘制循环滚动的背景图片
实现思路
通过编辑两张同样照片实现再屏幕上永远显示一张图片,同时当第一张图片完全移除窗口时迅速的移到另一张图片的上方相接来制造出背景无限滚动的效果
注意
图片的选择与使用必须采用整体对称相接的,以免出现接不到一起的尴尬,本次游戏图片默认第一关使用下图
代码
`Public class BackGround {
private static int y1;
private static int y2;
private Bitmap bitmap;
static int height;
public BackGround(Bitmap bitmap,int height){
this.bitmap = bitmap;
this.height = height;
y1 = 0;
y2 = y1-MySurfaceView.height;
}
public void bGP(Canvas canvas,Paint paint){ //绘制每一帧的背景图片
bYH();
paint.setColor(Color.RED);
canvas.drawBitmap(bitmap,0,y1,paint);
canvas.drawBitmap(bitmap,0,y2,paint);
}
public void bYH(){ //在每一帧中变换两张图片的Y坐标实现图片变化
y1+=10;
y2+=10;
if(y1>=MySurfaceView.height){
y1 = y2-bitmap.getHeight();
}
if(y2>=MySurfaceView.height){
y2 = y1-bitmap.getHeight();
}
}
}`
如何绘制飞机
飞机的整体移动原理
通过创建一个事件监听器,在用户每一次对屏幕进行触摸滑动操作时进行监听,一旦用户的触碰点在飞机的坐标范围围城的矩形范围内时,就进行数据的赋值,将拖动后的坐标赋予该帧的飞机,以此来实现飞机的拖动移动,至于飞机的绘制,直接使用canvas.drawBitmap即可
代码片
触摸事件监听及判断核心代码
public boolean onTouchEvent(MotionEvent event) {
plane.touchEvent(event);
return true; //该句代码实现了监听器永远监听的功能
}
public void touchEvent(MotionEvent event) {
//该方法处在飞机类中,用来对坐标进行判断并对飞机坐标进行赋值
if (event</