您的位置:首页 > 其它

飞机大战-MyPlane自己飞机的实现

2015-05-30 22:36 381 查看
自己的飞机类,先判断他的isAlive为true和isExplosion为false如果满足再把他进行绘制,以及帧动画,游戏过程中两张图片不停的切换形成动画效果,当死亡是也有一个动

画。

package com.example.qgns;

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

public class MyPlane extends GameObject {
private Bitmap myPlane[]=new Bitmap[2];//定义数组图片
private Bitmap myPlaneExplosion[]=new Bitmap[4]; //爆炸数组图片
private float middle_x;//因为子弹的位置与飞机位置有关
private float middle_y;//这两个参数传给子弹的

public MyPlane(Resources res) {
super(res);
isAlive=true;//设为存活状态
initBitmap();
}

@Override
public void initScreen(float screen_width, float screen_height) {//初始化开始位置
super.initScreen(screen_width, screen_height);
object_x=screen_width/2-object_width/2;
object_y=screen_height-object_height*2;

middle_x=object_x+object_width/2;
middle_y=object_y;
}

@Override
public void initBitmap() {//初始化图片
for(int i=0;i<myPlane.length;i++){
myPlane[i]=BitmapFactory.decodeResource(res, R.drawable.hero1+i);
}

for(int j=0;j<myPlaneExplosion.length;j++){
myPlaneExplosion[j]=BitmapFactory.decodeResource(res, R.drawable.hero_blowup_n1+j);
}

object_width=myPlane[1].getWidth();
object_height=myPlane[1].getHeight();

}

@Override
public void myDraw(Canvas canvas) {
if(isAlive){
if(!isExplosion){
canvas.drawBitmap(myPlane[currentFrome], object_x, object_y, paint);
currentFrome++;//通过改变帧数从而改变动画效果
if(currentFrome>=myPlane.length){
currentFrome=0;
}
}else{
canvas.drawBitmap(myPlaneExplosion[currentFrome], object_x, object_y, paint);
currentFrome++;
if(currentFrome>=myPlaneExplosion.length){
currentFrome=0;
isAlive = false;
}
}
}
}

public void initObject_xy(float x,float y){//到时候触摸屏幕时调用的方法,随手指移动而移动
this.middle_x=x;
this.object_x=x-object_width/2;
this.middle_y=y-object_height;
this.object_y=y-object_height;
}

public float getMiddle_x(){
return middle_x;

}

public float getMiddle_y(){
return middle_y;
}

@Override
public void release() {//图片回收操作
for(int i=0;i<myPlane.length;i++){
if(!myPlane[i].isRecycled()){
myPlane[i].recycle();
}
}

for(int j=0;j<myPlaneExplosion.length;j++){
if(!myPlaneExplosion[j].isRecycled()){
myPlaneExplosion[j].recycle();
}
}
}

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