资源简介
import com.pic.SpriteCmd.MainState;
import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Rect;
import android.graphics.drawable.BitmapDrawable;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class PictureView extends View implements Runnable,SensorEventListener
{
private Context context;
private int scrWidth;//屏幕的宽度
private int scrHeight;//屏幕的高度
private int MainTime = 0; //主计时器
private Bitmap imgBackground = null;//背景图片
private Bitmap imgBackground2 = null;
private ButtonUtil ButtonStart = null;//开始按钮
private ButtonUtil ButtonHelp = null;//帮助按钮
private ButtonUtil ButtonScore = null;
private ButtonUtil ButtonDetail = null;
private Bitmap imgStart = null;//开始按钮对应的图片
private Bitmap imgHelp = null;//帮助按钮对应的图片
private Bitmap imgScore = null;
private Bitmap imgDetail = null;
private ButtonUtil ButtonFirst = null;//选关界面第一关对应按钮
private ButtonUtil ButtonSecond = null;//选关界面第二关对应按钮
private Bitmap imgFirst = null;//第一关对应图片
private Bitmap imgSecond = null;//第二关对应图片
private Bitmap imgHelpDisplay = null;//帮助图片
private Bitmap imgScoreDisplay = null;//高分图片
private Bitmap imgDetailDisplay = null;
private ButtonUtil ButtonReturn = null;//返回按钮
private Bitmap imgReturn = null;//返回按钮对应图片
private ButtonUtil ButtonSound = null;//声音开关按钮
private Bitmap imgSoundOn = null;//开声音对应图片
private Bitmap imgSoundOff = null;//关声音对应图片
private Boolean is_SoundOn = true;//声音是否开
private Boolean is_LeverUp = false;//是否过关
private int DeadEnemyCnt = 0;//敌人死亡计数器 当死亡敌人个数达到某个数时 过关
private int LeverCnt = 0;//过关界面的计数器
private static MediaPlayer mediaPlayer = null;//声音播放对象
public enum GameState//游戏状态
{
GAMESTATE_MENU, //菜单
GAMESTATE_LEVELGUIDE, //关数提示,显示第一关,第二关 。。
GAMESTATE_HELP,
GAMESTATE_SCORE,
GAMESTATE_DETAIL,
GAMESTATE_GAME, //游戏
}
public GameState GameState; // 游戏状态
public static final int STAR_NUM = 30;
public SpriteCmd rgSpriteCmd = new SpriteCmd();////主角SpriteCmd类对象实例化
public SpriteCmd rgCmdStar[] = new SpriteCmd[30];//星星对象
public SpriteCmd rgBulletCmd[] = new SpriteCmd[20];//主角子弹对象
public SpriteCmd rgEnemy1Cmd = new SpriteCmd();//敌人1的SpriteCmd类对象
public SpriteCmd rgEnemy2Cmd = new SpriteCmd();//敌人2对象
public SpriteCmd rgEnemy3Cmd = new SpriteCmd();//敌人3对象
public SpriteCmd rgEnemy4Cmd = new SpriteCmd();
public SpriteCmd rgEnemy5Cmd = new SpriteCmd();
public SpriteCmd rgBombCmds[] = new SpriteCmd[5];//敌人死亡时候爆炸的对象
private int LeverNum;//关数计数器
public Bitmap imgPlane;//主角飞机对应图片
public Bitmap imgStar;//星星对应图片
public Bitmap imgBullet;//子弹图片
public Bitmap imgEnemy1;//敌人1对应图片
public Bitmap imgEnemy2;//敌人2对象图片
public Bitmap imgEnemy3;
public Bitmap imgEnemy4;
public Bitmap imgEnemy5;
public Bitmap imgBomb; //炸弹对应图片
public Bitmap imgPassLerver;//过关图片
public SpriteCmd rgGameover = new SpriteCmd();
public Bitmap imgBloodBg;//血量框图片
public Bitmap imgBlood;//血量图片
public boolean IsRightKeyRealess = true;//右键是否释放
public boolean IsLeftKeyRealess = true;//左键是否释放
public boolean IsUpKeyRealess = true;//上键是否释放
public boolean IsDownKeyRealess = true;//下键是否释放
private SensorManager sm;//传感器管理器
private Sensor sensor;//重力传感器对象
public float x_sensor = 0;//重力传感器x方向的位置偏移
public float y_sensor = 0;//重力传感器y方向的位置偏移
public float z_sensor = 0;//重力传感器z方向的位置偏移
public SpriteCmd rgBackground1 = new SpriteCmd();//背景对象1
public SpriteCmd rgBackground2 = new SpriteCmd();//背景对象2
public SpriteCmd rgLerver = new SpriteCmd();//“恭喜过关”对象
public SpriteCmd rgBloodBg = new SpriteCmd();//“血量框”对象
public SpriteCmd rgBlood = new SpriteCmd();//“血量”对象
public boolean Is_exit = false;//是否退出游戏
public PictureView(Context context)
{
super(context);//调用父类的构造方法
MainTime = 0; // 主计时清零
sm = (SensorManager) context.getSystemService(Context.SENSOR_SERVICE);
sensor = sm.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);// 得到一个重力传感器实例
sm.registerListener(this, sensor, SensorManager.SENSOR_DELAY_GAME);
new Thread(this).start(); //启动线程 通过start()方法找到run()方法
this.context = context;
Is_exit = false;
}
public void TurnToMenu()//进入菜单
{
imgBackground =((BitmapDrawable)getResources().getDrawable(R.drawable.bg1)).getBitmap();//背景图片
if (imgStart == null)
{
imgStart = ((BitmapDrawable)getResources().getDrawable(R.drawable.start)).getBitmap();//“开始游戏”的图片
}
if (imgHelp == null)
{
imgHelp = ((BitmapDrawable)getResources().getDrawable(R.drawable.help)).getBitmap();//“游戏帮助”的图片
}
if (imgScore == null)
{
imgScore = ((BitmapDrawable)getResources().getDrawable(R.drawable.score)).getBitmap();//“高分”的图
}
if (imgDetail == null)
{
imgDetail = ((BitmapDrawable)getResources().getDrawable(R.drawable.detail)).getBitmap();//“信息”的图
}
if (imgReturn == null)
{
imgReturn = ((BitmapDrawable)getResources().getDrawable(R.drawable.back)).getBitmap();//“返回”的图片
}
ButtonStart = new ButtonUtil(imgStart,(scrWidth - imgStart.getWidth())/2,100);//把“开始游戏”的图片与按钮绑定
ButtonHelp = new ButtonUtil(imgHelp,(scrWidth - imgHelp.getWidth())/2,200);
ButtonScore = new ButtonUtil(imgScore,(scrWidth - imgScore.getWidth())/2,300);
ButtonDetail = new ButtonUtil(imgDetail,(scrWidth - imgDetail.getWidth())/2,400);
ButtonReturn = new ButtonUtil(imgReturn,scrWidth - imgReturn.getWidth() - 10,scrHeight - 50);//把“返回”的图片与按钮绑定
GameState = GameState.GAMESTATE_MENU; //状态转换成菜单状态
}
public void TurnToLeverGuide()//进入选关
{
ReleaseImage(imgBackground);
imgBackground =((BitmapDrawable)getResources().getDrawable(R.drawable.bg2)).getBitmap();//背景图片
if (imgFirst == null)
{
imgFirst = ((BitmapDrawable)getResources().getDrawable(R.drawable.firstlever)).getBitmap();//“第1关”的图片
}
if (imgSecond == null)
{
imgSecond = ((BitmapDrawable)getResources().getDrawable(R.drawable.secondlever)).getBitmap();//“第2关”的图片
}
ButtonFirst = new ButtonUtil(imgFirst,(scrWidth - imgFirst.getWidth())/2,150);
ButtonSecond = new ButtonUtil(imgSecond,(scrWidth - imgSecond.getWidth())/2,300);
GameState = GameState.GAMESTATE_LEVELGUIDE;
}
public void TurnToHelp()//进入帮助
{
if (imgHelpDisplay == null)
{
imgHelpDisplay = ((BitmapDrawable)getResources().getDrawable(R.drawable.helpdisplay)).getBitmap();
}
GameState = GameState.GAMESTATE_HELP;
}
public void TurnToScore()//进入高分榜
{
if (imgScoreDisplay == null)
{
TextView a=new TextView(context);
a.setText("a");
//imgScoreDisplay = ((BitmapDrawable)getResources().getDrawable(R.drawable.scoredisplay)).getBitmap();
}
GameState = GameState.GAMESTATE_SCORE;
}
public void TurnToDetail()//进入信息
{
if (imgDetailDisplay == null)
{
imgDetailDisplay = ((BitmapDrawable)getResources().getDrawable(R.drawable.detaildisplay)).getBitmap();
}
GameState = GameState.GAMESTATE_DETAIL;
}
public void TurnToGame()//进入游戏
{
LoadResource();
InitLever();//
GameState = GameState.GAMESTATE_GAME;
//////////为背景图定义了SpriteCmd类的两个对象,为背景图设定两个位置同时画出来////
rgBackground1.x = 0;
rgBackground1.y = -scrHeight;
rgBackground1.unLayer = 0;
rgBackground1.unWidth = scrWidth; //背景图的宽度设为全屏
rgBackground1.unHeight = scrHeight;//背景图的宽度设为全屏
rgBackground2.x = 0;
rgBackground2.y = 0;
rgBackground2.unLayer = 0;
rgBackground2.unWidth = scrWidth;//背景图的宽度设为全屏
rgBackground2.unHeight = scrHeight; //背景图的宽度设为全屏
/////////////////////////////////////////////////////////////
imgSoundOn =((BitmapDrawable)getResources().getDrawable(R.drawable.bgsoundon)).getBitmap();
imgSoundOff =((BitmapDrawable)getResources().getDrawable(R.drawable.bgsoundoff)).getBitmap();
ButtonSound = new ButtonUtil(imgSoundOn,10,scrHeight - 20);
rgLerver.unWidth = 200;
rgLerver.unHeight = 40;
rgLerver.unLayer = 255;
rgGameover.unWidth = 200;
rgGameover.unHeight = 40;
rgGameover.unLayer = 255;
rgBloodBg.unWidth = 100;
rgBloodBg.unHeight = 32;
rgBloodBg.unLayer = 0;
rgBloodBg.x = 0;
rgBloodBg.y = 0;
rgBlood.unWidth = 96;
rgBlood.unHeight = 14;
rgBlood.unLayer = 0;
rgBlood.x = rgBloodBg.x;
rgBlood.y = rgBloodBg.y 10;
mediaPlayer = MediaPlayer.create(context, R.raw.game);
mediaPlayer.start();
mediaPlayer.setLooping(true);
is_LeverUp = false;
}
void InitLever()
{
int i;
switch (LeverNum) {
case 1: //第一关
rgSpriteCmd.unWidth = 36;
rgSpriteCmd.unHeight = 34;
rgSpriteCmd.x = (scrWidth - rgSpriteCmd.unWidth)/2;
rgSpriteCmd.y = scrHeight - rgSpriteCmd.unHeight;
rgSpriteCmd.unLayer = 0;
rgSpriteCmd.unSpriteIndex = 0;
rgSpriteCmd.CurrentState = MainState.enSTAND;
rgSpriteCmd.WalkCount = 0;
rgSpriteCmd.IsHurt = false;
rgSpriteCmd.IsLeftStop = false;
rgSpriteCmd.IsRight = false;
rgSpriteCmd.IsTopStop = false;
rgSpriteCmd.IsDownStop = false;
//敌人初始化
rgEnemy1Cmd.unWidth = 35;
rgEnemy1Cmd.unHeight = 30;
rgEnemy1Cmd.unLayer = 255;
rgEnemy3Cmd.unWidth = 35;
rgEnemy3Cmd.unHeight = 30;
rgEnemy3Cmd.unLayer = 255;
rgEnemy3Cmd.IsRight = false;
rgEnemy4Cmd.unWidth = 35;
rgEnemy4Cmd.unHeight = 30;
rgEnemy4Cmd.unLayer = 255;
rgEnemy4Cmd.IsRight = false;
break;
case 2: //第二关
rgSpriteCmd.unWidth = 36;
rgSpriteCmd.unHeight = 34;
rgSpriteCmd.x = (scrWidth - rgSpriteCmd.unWidth)/4;
rgSpriteCmd.y = scrHeight - rgSpriteCmd.unHeight;
rgSpriteCmd.unLayer = 0;
rgSpriteCmd.unSpriteIndex = 0;
rgSpriteCmd.CurrentState = MainState.enSTAND;
rgSpriteCmd.WalkCount = 0;
rgSpriteCmd.IsHurt = false;
rgSpriteCmd.IsLeftStop = false;
rgSpriteCmd.IsRight = false;
rgSpriteCmd.IsTopStop = false;
rgSpriteCmd.IsDownStop = false;
//敌人初始化
rgEnemy1Cmd.unWidth = 35;
rgEnemy1Cmd.unHeight = 30;
rgEnemy1Cmd.unLayer = 255;
rgEnemy2Cmd.unWidth = 35;
rgEnemy2Cmd.unHeight = 30;
rgEnemy2Cmd.unLayer = 255;
rgEnemy3Cmd.unWidth = 35;
rgEnemy3Cmd.unHeight = 30;
rgEnemy3Cmd.unLayer = 255;
rgEnemy3Cmd.IsRight = false;
rgEnemy4Cmd.unWidth = 35;
rgEnemy4Cmd.unHeight = 30;
rgEnemy4Cmd.unLayer = 255;
rgEnemy5Cmd.unWidth = 35;
rgEnemy5Cmd.unHeight = 30;
rgEnemy5Cmd.unLayer = 255;
rgEnemy5Cmd.IsRight = false;
break;
default:
break;
}
////星星的初始化///////////////////////////////
for (i = 0; i < STAR_NUM; i = 1)
{
rgCmdStar[i] = new SpriteCmd();//每颗星星都实例化SpriteCmd类对象
}
for (i = 0; i < STAR_NUM; i = 2) //偶数个星星的图片索引值为0
{
rgCmdStar[i].unSpriteIndex = 0;
}
for (i = 1; i < STAR_NUM; i = 2) //基数个星星的图片索引值为1
{
rgCmdStar[i].unSpriteIndex = 1;
}
for (i = 0; i < STAR_NUM; i )
{
rgCmdStar[i].unWidth = 3; //每颗星星图片的宽度和高度
rgCmdStar[i].unHeight = 3;
rgCmdStar[i].x = scrWidth/STAR_NUM*i 10;//每颗星星图片绘制在屏幕上的位置
rgCmdStar[i].y = scrHeight/STAR_NUM*i;
}
//////////////每颗子弹实例化SpriteCmd类对象,初始化////////
for(i=0;i<20;i )
{
rgBulletCmd[i] = new SpriteCmd();
}
for(i=0;i<20;i )
{
rgBulletCmd[i].unWidth = 16;
rgBulletCmd[i].unHeight = 14;
rgBulletCmd[i].unLayer = 255;
}
//////////////每个炸弹实例化SpriteCmd类对象,初始化////////
for(i=0;i<5;i )
{
rgBombCmds[i] = new SpriteCmd();
}
for(i=0;i<5;i )
{
rgBombCmds[i].unWidth = 40;
rgBombCmds[i].unHeight = 40;
rgBombCmds[i].unLayer = 255;
}
DeadEnemyCnt = 0;
LeverCnt = 0;
}
void LoadResource()
{
ReleaseImage(imgBackground);
imgBackground =((BitmapDrawable)getResources().getDrawable(R.drawable.bg2)).getBitmap();
imgBackground2=((BitmapDrawable)getResources().getDrawable(R.drawable.bg3)).getBitmap();
imgPassLerver = ((BitmapDrawable)getResources().getDrawable(R.drawable.passlevel)).getBitmap();
imgBloodBg = ((BitmapDrawable)getResources().getDrawable(R.drawable.bloodbg)).getBitmap();
imgBlood = ((BitmapDrawable)getResources().getDrawable(R.drawable.blood)).getBitmap();
imgStar = ((BitmapDrawable)getResources().getDrawable(R.drawable.star)).getBitmap();
imgPlane = ((BitmapDrawable)getResources().getDrawable(R.drawable.plane)).getBitmap();//主机
imgBullet = ((BitmapDrawable)getResources().getDrawable(R.drawable.bullet)).getBitmap();
imgEnemy1 = ((BitmapDrawable)getResources().getDrawable(R.drawable.enemy1)).getBitmap();
imgEnemy2 = ((BitmapDrawable)getResources().getDrawable(R.drawable.enemy2)).getBitmap();
imgEnemy3 = ((BitmapDrawable)getResources().getDrawable(R.drawable.enemy3)).getBitmap();
imgEnemy4 = ((BitmapDrawable)getResources().getDrawable(R.drawable.enemy4)).getBitmap();
imgEnemy5= ((BitmapDrawable)getResources().getDrawable(R.drawable.enemy5)).getBitmap();
imgBomb = ((BitmapDrawable)getResources().getDrawable(R.drawable.zhadan)).getBitmap();
}
public void run()
{
long frameElapse, frameTick;
try
{
frameTick = System.currentTimeMillis(); // 本次执行起始时间
if(!Is_exit)
{
while (true)
{
frameElapse = System.currentTimeMillis() - frameTick; // 画一帧所用的时间
if (frameElapse < 80) // 如果不足80毫秒
{
Thread.sleep((80 - frameElapse)); // 线程休眠,保证画一帧的时间为80毫秒
}
postInvalidate(); // 刷新屏幕
frameTick = System.currentTimeMillis(); // 本次执行结束时间
}
}
else
{
return;
}
}
catch (Exception e)
{
e.printStackTrace();
}
}
protected void onSizeChanged(int w, int h, int oldw, int oldh)
{
scrWidth = w; // 获取屏幕宽度
scrHeight = h; // 获取屏幕高度
super.onSizeChanged(w, h, oldw, oldh);
TurnToMenu();
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////绘制屏幕
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
public void onDraw(Canvas canvas)
{
super.onDraw(canvas);
MainTime ; // 主计时时间增加
if (MainTime == 100000000)
{
MainTime = 0;
}
if (rgBackground1.y >= 0) {
rgBackground1.y = -scrHeight;
}
if (rgBackground2.y >= scrHeight) {
rgBackground2.y = 0;
}
switch (GameState)
{
case GAMESTATE_MENU: //画菜单
DrawMenu(canvas);
break;
case GAMESTATE_LEVELGUIDE:
DrawLeverGuide(canvas);
break;
case GAMESTATE_HELP:
DrawHelp(canvas);
break;
case GAMESTATE_SCORE:
DrawScore(canvas);
break;
case GAMESTATE_DETAIL:
DrawDetail(canvas);
break;
case GAMESTATE_GAME:
DrawGame(canvas);
default:
break;
}
}
public void DrawMenu(Canvas canvas)
{
DisplayImage(canvas, imgBackground,imgBackground.getWidth(), imgBackground.getHeight());
ButtonStart.drawButton(canvas, null);
ButtonHelp.drawButton(canvas, null);
ButtonScore.drawButton(canvas,null);
ButtonDetail.drawButton(canvas,null);
ButtonReturn.drawButton(canvas, null);
}
public void DrawLeverGuide(Canvas canvas)
{
DisplayImage(canvas, imgBackground,imgBackground.getWidth(), imgBackground.getHeight());
ButtonFirst.drawButton(canvas, null);
ButtonSecond.drawButton(canvas, null);
ButtonReturn.drawButton(canvas, null);
}
public void DrawHelp(Canvas canvas)
{
DisplayImage(canvas,imgHelpDisplay,imgHelpDisplay.getWidth(),imgHelpDisplay.getHeight());
ButtonReturn.drawButton(canvas, null);
}
public void DrawScore(Canvas canvas)
{
//DisplayImage(canvas,imgScoreDisplay,imgScoreDisplay.getWidth(),imgScoreDisplay.getHeight());
Paint paint = new Paint();
paint.setTextSize(22);//设置字体大小
paint.setColor(Color.BLUE);
//paint.setTypeface();//设置字体类型
canvas.drawText("用户名", 50, 50, paint);
//paint.setTypeface();//设置字体类型
Paint paint1 = new Paint();
paint1.setTextSize(22);//设置字体大小
paint1.setColor(Color.BLUE);
canvas.drawText("分数", 150,50, paint1);
//canvas.drawText("o", 33, 33, 11, scrWidth, null);
ButtonReturn.drawButton(canvas, null);
}
public void DrawDetail(Canvas canvas)
{
DisplayImage(canvas,imgDetailDisplay,imgDetailDisplay.getWidth(),imgDetailDisplay.getHeight());
ButtonReturn.drawButton(canvas, null);
}
public void DrawGame(Canvas canvas)
{
int i,j;
if (rgSpriteCmd.x < 0) {//到达地图左边界
rgSpriteCmd.IsLeftStop = true;
rgSpriteCmd.x = 0;
}
else {
rgSpriteCmd.IsLeftStop = false;
}
if (rgSpriteCmd.x rgSpriteCmd.unWidth > scrWidth) {//到达地图右边界
rgSpriteCmd.IsRigtStop = true;
rgSpriteCmd.x = scrWidth - rgSpriteCmd.unWidth;
}
else {
rgSpriteCmd.IsRigtStop = false;
}
if (rgSpriteCmd.y < 0) {//到达地图上边界
rgSpriteCmd.IsTopStop = true;
rgSpriteCmd.y = 0;
}
else {
rgSpriteCmd.IsTopStop = false;
}
if (rgSpriteCmd.y rgSpriteCmd.unHeight > scrHeight) {//到达地图下边界
rgSpriteCmd.IsDownStop = true;
rgSpriteCmd.y = scrHeight - rgSpriteCmd.unHeight;
}
else {
rgSpriteCmd.IsDownStop = false;
}
////主机与敌机的碰撞判断及处理///////////////////////////////
if ((CheckHitEnemy(rgSpriteCmd, rgEnemy1Cmd) || CheckHitEnemy(rgSpriteCmd, rgEnemy2Cmd)
|| CheckHitEnemy(rgSpriteCmd, rgEnemy3Cmd)) || CheckHitEnemy(rgSpriteCmd, rgEnemy4Cmd)
|| CheckHitEnemy(rgSpriteCmd, rgEnemy5Cmd)&& !rgSpriteCmd.IsHurt) {
rgSpriteCmd.CurrentState = MainState.enHURT;
rgSpriteCmd.ProtectCount = 18;
rgSpriteCmd.IsHurt = true;
rgBlood.unWidth -= 19;
if (rgBlood.unWidth < 0) {
rgBlood.unWidth = 96;
}
}
/////主机子弹与敌机1的碰撞////////////////////////////////
for(i=0;i<20;i )
{
if (CheckHitEnemy(rgBulletCmd[i], rgEnemy1Cmd)) {
rgBulletCmd[i].unLayer = 255;
rgEnemy1Cmd.unLayer = 255;
for (j = 0; j < 5; j ) {
if(rgBombCmds[j].unLayer == 255)
{
rgBombCmds[j].unLayer = 0;
rgBombCmds[j].x = rgEnemy1Cmd.x 15;
rgBombCmds[j].y = rgEnemy1Cmd.y 15;
rgBombCmds[j].WalkCount = 0;
rgBombCmds[j].unSpriteIndex = 0;
break;
}
}
DeadEnemyCnt ;
}
}
////////主机子弹与敌机2的碰撞//////////////////////////////
for(i=0;i<20;i )
{
if (CheckHitEnemy(rgBulletCmd[i], rgEnemy2Cmd)) {
rgBulletCmd[i].unLayer = 255;
rgEnemy2Cmd.unLayer = 255;
for (j = 0; j < 5; j ) {
if(rgBombCmds[j].unLayer == 255)
{
rgBombCmds[j].unLayer = 0;
rgBombCmds[j].x = rgEnemy2Cmd.x 15;
rgBombCmds[j].y = rgEnemy2Cmd.y 15;
rgBombCmds[j].WalkCount = 0;
rgBombCmds[j].unSpriteIndex = 0;
break;
}
}
DeadEnemyCnt ;
}
}
/////主机子弹与敌机3的碰撞/////////////////////////////////
for(i=0;i<20;i )
{
if (CheckHitEnemy(rgBulletCmd[i], rgEnemy3Cmd)) {
rgBulletCmd[i].unLayer = 255;
rgEnemy3Cmd.unLayer = 255;
for (j = 0; j < 5; j ) {
if(rgBombCmds[j].unLayer == 255)
{
rgBombCmds[j].unLayer = 0;
rgBombCmds[j].x = rgEnemy3Cmd.x 15;
rgBombCmds[j].y = rgEnemy3Cmd.y 15;
rgBombCmds[j].WalkCount = 0;
rgBombCmds[j].unSpriteIndex = 0;
break;
}
}
DeadEnemyCnt ;
}
}
/////主机子弹与敌机4的碰撞/////////////////////////////////
for(i=0;i<20;i )
{
if (CheckHitEnemy(rgBulletCmd[i], rgEnemy4Cmd)) {
rgBulletCmd[i].unLayer = 255;
rgEnemy4Cmd.unLayer = 255;
for (j = 0; j < 5; j ) {
if(rgBombCmds[j].unLayer == 255)
{
rgBombCmds[j].unLayer = 0;
rgBombCmds[j].x = rgEnemy4Cmd.x 15;
rgBombCmds[j].y = rgEnemy4Cmd.y 15;
rgBombCmds[j].WalkCount = 0;
rgBombCmds[j].unSpriteIndex = 0;
break;
}
}
DeadEnemyCnt ;
}
}
/////主机子弹与敌机5的碰撞/////////////////////////////////
for(i=0;i<20;i )
{
if (CheckHitEnemy(rgBulletCmd[i], rgEnemy5Cmd)) {
rgBulletCmd[i].unLayer = 255;
rgEnemy5Cmd.unLayer = 255;
for (j = 0; j < 5; j ) {
if(rgBombCmds[j].unLayer == 255)
{
rgBombCmds[j].unLayer = 0;
rgBombCmds[j].x = rgEnemy5Cmd.x 15;
rgBombCmds[j].y = rgEnemy5Cmd.y 15;
rgBombCmds[j].WalkCount = 0;
rgBombCmds[j].unSpriteIndex = 0;
break;
}
}
DeadEnemyCnt ;
}
}
/////炸弹的处理////////////////////////////////////
for(i=0;i<5;i )
{
if (rgBombCmds[i].unLayer != 255) {
if (rgBombCmds[i].WalkCount < 5) {
rgBombCmds[i].unSpriteIndex = rgBombCmds[i].WalkCount;
}
else {
rgBombCmds[i].unLayer = 255;
}
rgBombCmds[i].WalkCount ;
}
}
////////////画背景/////////////////////////
DrawSprites(canvas,imgBackground,rgBackground1);//第二个参数是要画的图片,第三个参数要画在屏幕上的位置等信息
DrawSprites(canvas,imgBackground,rgBackground2);
rgBackground1.y = 10;
rgBackground2.y = 10;
/////////////画血量/////////////////
DrawSprites(canvas,imgBloodBg,rgBloodBg);
DrawSprites(canvas,imgBlood,rgBlood);
/////////////画分数//////////
Paint paint2 = new Paint();
paint2.setTextSize(22);//设置字体大小
paint2.setColor(Color.WHITE);
canvas.drawText("分数:",370,50, paint2);
int m=DeadEnemyCnt*76;
String l=m "";
Paint paint3 = new Paint();
paint3.setTextSize(22);//设置字体大小
paint3.setColor(Color.WHITE);
canvas.drawText(l,420,50,paint3);
///////过关判断//////////////////////////
if (DeadEnemyCnt > 30 && LeverNum == 1) {
is_LeverUp = true;
}
////过关处理 主机、敌机、主机子弹全部消失 背景音乐停播 初始化恭喜过关 以及画出来
if (is_LeverUp) {
LeverCnt ;
rgSpriteCmd.unLayer = 255;
rgEnemy1Cmd.unLayer = 255;
rgEnemy2Cmd.unLayer = 255;
rgEnemy3Cmd.unLayer = 255;
rgEnemy4Cmd.unLayer = 255;
for (i = 0; i < 5; i ) {
rgBulletCmd[i].unLayer = 255;
}
mediaPlayer.pause();
rgLerver.unLayer = 0;
rgLerver.x = (scrWidth - rgLerver.unWidth)/2;
rgLerver.y = (scrHeight - rgLerver.unHeight)/2 MainTime%2*3;
DrawSprites(canvas,imgPassLerver,rgLerver);//画出“恭喜过关”
if(LeverCnt == 40)//当计数器到40时进去下一关
{
LeverNum =1;
TurnToGame();
}
}
//////每帧各星星的位置并画出来////////////////////////////
for (i = 0; i < STAR_NUM; i )
{
if (rgCmdStar[i].y rgCmdStar[i].unHeight > scrHeight)
{
if (MainTime %2 == 0) {
rgCmdStar[i].x = scrWidth/STAR_NUM*i 10;
}
else {
rgCmdStar[i].x = scrWidth/STAR_NUM*(STAR_NUM - i) 10;
}
rgCmdStar[i].y = 0;
}
else
{
rgCmdStar[i].y = 5;
}
DrawSprites(canvas,imgStar,rgCmdStar[i]);
}
///////画“返回”和“声音”按钮//////////
ButtonReturn.drawButton(canvas, null);
ButtonSound.drawButton(canvas, null);
/////子弹重新初始化///////////////////////
for(i = 0;i<20;i )
{
if (rgBulletCmd[i].unLayer == 255 && MainTime%2 == 0 && !is_LeverUp) {
rgBulletCmd[i].unLayer = 0;
rgBulletCmd[i].x = rgSpriteCmd.x 10;
rgBulletCmd[i].y = rgSpriteCmd.y - 10;
break;
}
}
/////子弹的运动以及走出屏幕后的处理
for(i = 0;i<20;i )
{
if (rgBulletCmd[i].unLayer != 255) {
rgBulletCmd[i].y -= 35;
if (rgBulletCmd[i].y < -10) {
rgBulletCmd[i].unLayer = 255;
}
}
}
///画子弹
for(i=0;i<20;i )
{
DrawSprites(canvas,imgBullet,rgBulletCmd[i]);
}
///////敌人1初始化 以及运动,画敌机1//////////////////
if(rgEnemy1Cmd.unLayer == 255 && !is_LeverUp)
{
rgEnemy1Cmd.unLayer = 0;
rgEnemy1Cmd.x = (scrWidth - rgEnemy1Cmd.unWidth)/2; //屏幕x方向中间
rgEnemy1Cmd.y = scrHeight/5 ;
}
else {
rgEnemy1Cmd.y =14;
if (rgEnemy1Cmd.y > scrHeight) {
rgEnemy1Cmd.unLayer = 255;
}
}
DrawSprites(canvas,imgEnemy1,rgEnemy1Cmd);//画敌机1;由imgEnemy1和rgEnemy1Cmd构成敌机1,imgEnemy1代表图条,rgEnemy1Cmd代表绘制位置等
///////敌人2初始化 以及运动,画敌机2//////////////////
if (rgEnemy2Cmd.unLayer == 255 && !is_LeverUp) {
rgEnemy2Cmd.unLayer = 0;
rgEnemy2Cmd.x = 0;
rgEnemy2Cmd.y = scrHeight/4;
}
else {
rgEnemy2Cmd.x =5;
rgEnemy2Cmd.y =10;
if (rgEnemy2Cmd.y > scrHeight){
rgEnemy2Cmd.unLayer = 255;
}
}
DrawSprites(canvas,imgEnemy2,rgEnemy2Cmd);//画敌机2;由imgEnemy2和rgEnemy2Cmd构成敌机2
///////敌人3初始化 以及运动,画敌机3//////////////////
if (rgEnemy3Cmd.unLayer == 255 && !is_LeverUp) {
rgEnemy3Cmd.unLayer = 0;
rgEnemy3Cmd.x = scrWidth - rgEnemy3Cmd.unWidth;//屏幕x方向最右边
rgEnemy3Cmd.y = scrHeight/3;
}
else {
if (rgEnemy3Cmd.IsRight) {
rgEnemy3Cmd.x =8;
}
else {
rgEnemy3Cmd.x -=8;
}
if (rgEnemy3Cmd.x < 0) {
rgEnemy3Cmd.IsRight = true;
}
if (rgEnemy3Cmd.x > scrWidth - rgEnemy3Cmd.unWidth) {
rgEnemy3Cmd.IsRight = false;
}
}
DrawSprites(canvas,imgEnemy3,rgEnemy3Cmd);//画敌机3;由imgEnemy1和rgEnemy3Cmd构成敌机3,敌机1和敌机3使用相同的图片,不同的初始位置和移动
//////敌人4初始化 以及运动,画敌机4//////////////////
if (rgEnemy4Cmd.unLayer == 255 && !is_LeverUp) {
rgEnemy4Cmd.unLayer = 0;
rgEnemy4Cmd.x = scrWidth ;//屏幕x方向最右边
rgEnemy4Cmd.y = (scrHeight-rgEnemy4Cmd.unWidth)/2;
}
else {
if (rgEnemy4Cmd.IsRight) {
rgEnemy4Cmd.y =5;
rgEnemy4Cmd.x -=5;
if (rgEnemy4Cmd.y > scrHeight||rgEnemy4Cmd.y< -scrHeight||rgEnemy4Cmd.x< -scrWidth) {
rgEnemy4Cmd.unLayer = 255;}
}
else {
rgEnemy4Cmd.y -=5;
if (rgEnemy4Cmd.y > scrHeight||rgEnemy4Cmd.y< -scrHeight||rgEnemy4Cmd.x< -scrWidth) {
rgEnemy4Cmd.unLayer = 255;}
}
if (rgEnemy4Cmd.y < (scrWidth - rgEnemy4Cmd.unWidth)/2) {
rgEnemy4Cmd.IsRight = true;
}
}
DrawSprites(canvas,imgEnemy4,rgEnemy4Cmd);//画敌机4
///////////////画5
if(rgEnemy5Cmd.unLayer == 255 && !is_LeverUp)
{
rgEnemy5Cmd.unLayer = 0;
rgEnemy5Cmd.x = rgEnemy5Cmd.unWidth; //屏幕x方向中间
rgEnemy5Cmd.y = (scrHeight - rgEnemy5Cmd.unHeight)/2 ;
}
else {
rgEnemy5Cmd.x = 5;
if (rgEnemy5Cmd.x > scrWidth) {
rgEnemy5Cmd.unLayer =0;
}
}
DrawSprites(canvas,imgEnemy5,rgEnemy5Cmd);//画敌机5
/////画炸弹///////////////
for(i=0;i<5;i )
{
DrawSprites(canvas,imgBomb,rgBombCmds[i]);
}
////画主机///////////////////
DrawSprites(canvas,imgPlane,rgSpriteCmd);
//主机各个状态下的处理 索引变化以及速度变化
if (rgSpriteCmd.CurrentState == MainState.enSTAND) {
rgSpriteCmd.unSpriteIndex = MainTime/2%2;
}
else if (rgSpriteCmd.CurrentState == MainState.enWALKRIGHT) {
rgSpriteCmd.WalkCount ;
rgSpriteCmd.unSpriteIndex = 3;
if (rgSpriteCmd.WalkCount < 5) {
rgSpriteCmd.x = 8;
}
else {
if (IsRightKeyRealess) {
rgSpriteCmd.CurrentState = MainState.enSTAND;
}
else {
rgSpriteCmd.CurrentState = MainState.enWALKRIGHT;
}
rgSpriteCmd.WalkCount = 0;
}
}
else if (rgSpriteCmd.CurrentState == MainState.enWALKLEFT) {
rgSpriteCmd.WalkCount ;
if (rgSpriteCmd.WalkCount < 5) {
rgSpriteCmd.x -= 8;
rgSpriteCmd.unSpriteIndex = 2;
}
else {
if (IsLeftKeyRealess) {
rgSpriteCmd.CurrentState = MainState.enSTAND;
}
else {
rgSpriteCmd.CurrentState = MainState.enWALKLEFT;
}
rgSpriteCmd.WalkCount = 0;
}
}
else if (rgSpriteCmd.CurrentState == MainState.enWALKUP) {
if (IsUpKeyRealess && y_sensor > -1 && y_sensor < 1) {
rgSpriteCmd.CurrentState = MainState.enSTAND;
}
else {
rgSpriteCmd.unSpriteIndex = 0;
rgSpriteCmd.y -= 10;
}
}
else if (rgSpriteCmd.CurrentState == MainState.enWALKDOWN) {
if (IsDownKeyRealess && y_sensor > -1 && y_sensor < 1) {
rgSpriteCmd.CurrentState = MainState.enSTAND;
}
else {
rgSpriteCmd.unSpriteIndex = 0;
rgSpriteCmd.y = 10;
}
}
else if (rgSpriteCmd.CurrentState == MainState.enHURT) {
rgSpriteCmd.unSpriteIndex = MainTime%2 - 1;
rgSpriteCmd.ProtectCount--;
if (rgSpriteCmd.ProtectCount == 0) {
rgSpriteCmd.CurrentState = MainState.enSTAND;
rgSpriteCmd.IsHurt = false;
}
}
}
///////把图片画成全屏///////////////////////////////////////////
public void DisplayImage(Canvas canvas, Bitmap bitmap,int width, int height)
{
if(bitmap!=null)
{
Rect scrRect = new Rect(); //绘制区域在屏幕上的矩形范围
scrRect.left = 0; //绘制区域左上角顶点在屏幕上的x坐标
scrRect.top = 0; //绘制区域左上角顶点在屏幕上的y坐标
scrRect.right = scrWidth;//width; //绘制区域右下角顶点在屏幕上的x坐标
scrRect.bottom = scrHeight;//height; //绘制区域右下角顶点在屏幕上的y坐标
Rect imgRect = new Rect(); //绘制区域在图片上的矩形范围
imgRect.left = 0; //绘制区域左上角顶点距离图片左上角的x坐标
imgRect.top = 0; //绘制区域左上角顶点距离图片左上角的y坐标
imgRect.right = 0 width; //绘制区域右下角顶点距离图片左上角的x坐标
imgRect.bottom = 0 height; //绘制区域右下角顶点距离图片左上角的y坐标
canvas.drawBitmap(bitmap, imgRect, scrRect, null); //绘制图片
}
}
///////////////////////////////////////////////////////////////////////////
////////画精灵(相对于屏幕的相对位置)//////////////////////
public void DrawSprites(Canvas canvas, Bitmap bitmap, SpriteCmd spriteCmd)
{
if (spriteCmd.unLayer != 255) {
DisplayImage(canvas,
bitmap, //要画的图片
spriteCmd.x, //图片左上角画在屏幕上的x位置
spriteCmd.y, //图片左上角画在屏幕上的y位置
spriteCmd.unWidth, //图片的宽度
spriteCmd.unHeight, //图片的高度
0, //要画的图片在整个图片中的x方向位置
spriteCmd.unSpriteIndex * spriteCmd.unHeight); //要画的图片在整个图片中的y方向位置
}
}
//画图片
//参数依次为画布Canvas对象,位图对象,在屏幕上的x坐标,在屏幕上的y坐标,
//绘制的宽度,绘制的高度,在图片上的x坐标,在图片上的y坐标
public void DisplayImage(Canvas canvas, Bitmap bitmap, int scrX, int scrY, int width, int height, int imgX, int imgY)
{
if(bitmap!=null)
{
Rect scrRect = new Rect(); //绘制区域在屏幕上的矩形范围
scrRect.left = scrX; //绘制区域左上角顶点在屏幕上的x坐标
scrRect.top = scrY; //绘制区域左上角顶点在屏幕上的y坐标
scrRect.right = scrX width; //绘制区域右下角顶点在屏幕上的x坐标
scrRect.bottom = scrY height; //绘制区域右下角顶点在屏幕上的y坐标
Rect imgRect = new Rect(); //绘制区域在图片上的矩形范围
imgRect.left = imgX; //绘制区域左上角顶点距离图片左上角的x坐标
imgRect.top = imgY; //绘制区域左上角顶点距离图片左上角的y坐标
imgRect.right = imgX width; //绘制区域右下角顶点距离图片左上角的x坐标
imgRect.bottom = imgY height; //绘制区域右下角顶点距离图片左上角的y坐标
canvas.drawBitmap(bitmap, imgRect, scrRect, null); //绘制图片
}
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//触屏事件
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
public boolean onTouchEvent(MotionEvent event)
{
switch (event.getAction())
{
case MotionEvent.ACTION_DOWN: // 当触摸到屏幕
IsRightKeyRealess = false;
IsLeftKeyRealess = false;
IsUpKeyRealess = false;
IsDownKeyRealess = false;
switch (GameState)
{
case GAMESTATE_MENU:
onTouchEventInMenu(event); // 菜单界面的触屏事件处理
break;
case GAMESTATE_LEVELGUIDE:
onTouchEventLeverGuide(event);// 选关界面的触屏事件处理
break;
case GAMESTATE_HELP:
onTouchEventHelp(event);// 帮助界面的触屏事件处理
break;
case GAMESTATE_SCORE:
onTouchEventScore(event);// 分数界面的触屏事件处理
break;
case GAMESTATE_DETAIL:
onTouchEventHelp(event);// 信息界面的触屏事件处理
break;
case GAMESTATE_GAME:
onTouchEventInGame(event);// 游戏界面的触屏事件处理
break;
default:
break;
}
return true;
case MotionEvent.ACTION_UP:// 当手抬起,离开屏幕
IsRightKeyRealess = true;
IsLeftKeyRealess = true;
IsUpKeyRealess = true;
IsDownKeyRealess = true;
return true;
default:
break;
}
return super.onTouchEvent(event);
}
public void onTouchEventInMenu(MotionEvent event)// 菜单界面的触屏事件处理
{
float x, y;
x = event.getX();
y = event.getY();
if (ButtonStart.isClick(x, y)) {
TurnToLeverGuide();
}
else if (ButtonHelp.isClick(x, y)) {
TurnToHelp();
}
else if (ButtonScore.isClick(x, y)) {
TurnToScore();
}
else if (ButtonDetail.isClick(x, y)) {
TurnToDetail();
}
else if (ButtonReturn.isClick(x, y)) {
Is_exit = true;
CloseGame();
}
}
public void onTouchEventLeverGuide(MotionEvent event)// 选关界面的触屏事件处理
{
float x, y;
x = event.getX();
y = event.getY();
if (ButtonReturn.isClick(x, y)) {
TurnToMenu();
}
else if (ButtonFirst.isClick(x, y)) {
LeverNum = 1;
TurnToGame();
}
else if (ButtonSecond.isClick(x, y)) {
LeverNum = 2;
TurnToGame();
}
}
public void onTouchEventHelp(MotionEvent event)// 帮助界面的触屏事件处理
{
float x, y;
x = event.getX();
y = event.getY();
if (ButtonReturn.isClick(x, y)) {
TurnToMenu();
}
}
public void onTouchEventScore(MotionEvent event)// 帮助界面的触屏事件处理
{
float x, y;
x = event.getX();
y = event.getY();
if (ButtonReturn.isClick(x, y)) {
TurnToMenu();
}
}
public void onTouchEventInGame(MotionEvent event)// 游戏界面的触屏事件处理
{
float x, y;
x = event.getX();
y = event.getY();
//////处理返回键///////////////////////////////
if (ButtonReturn.isClick(x, y)) {
TurnToMenu();
mediaPlayer.pause();
}
///////////////////////////////////////////
///////////////声音处理///////////////////////////
else if(ButtonSound.isClick(x, y)){
if (is_SoundOn) {
ButtonSound.setButtonPic(imgSoundOff);
is_SoundOn = false;
mediaPlayer.pause();
}
else {
ButtonSound.setButtonPic(imgSoundOn);
is_SoundOn = true;
mediaPlayer.start();
mediaPlayer.setLooping(true);
}
}
//////////////////////////////////////////////////
///////////////根据触摸点的位置判断主角飞机的运动状态////////////////////
if ((x- rgSpriteCmd.x - rgSpriteCmd.unWidth/2) > (y - rgSpriteCmd.y - rgSpriteCmd.unHeight / 2)
&& (x- rgSpriteCmd.x - rgSpriteCmd.unWidth/2) > -(y - rgSpriteCmd.y - rgSpriteCmd.unHeight / 2)
&& !rgSpriteCmd.IsRigtStop && rgSpriteCmd.CurrentState != MainState.enHURT &&!ButtonSound.isClick(x, y)){
rgSpriteCmd.CurrentState = MainState.enWALKRIGHT;//向右走
}
else if ((x - rgSpriteCmd.x - rgSpriteCmd.unWidth / 2 < (y - rgSpriteCmd.y - rgSpriteCmd.unHeight / 2))
&& (x- rgSpriteCmd.x - rgSpriteCmd.unWidth/2) < -(y - rgSpriteCmd.y - rgSpriteCmd.unHeight / 2)
&& !rgSpriteCmd.IsLeftStop && rgSpriteCmd.CurrentState != MainState.enHURT &&!ButtonSound.isClick(x, y)){
rgSpriteCmd.CurrentState = MainState.enWALKLEFT;//向左走
}
else if ((y - rgSpriteCmd.y - rgSpriteCmd.unHeight / 2) < (x - rgSpriteCmd.x - rgSpriteCmd.unWidth / 2)
&& (y - rgSpriteCmd.y - rgSpriteCmd.unHeight / 2) < - (x - rgSpriteCmd.x - rgSpriteCmd.unWidth / 2)
&& !rgSpriteCmd.IsTopStop && rgSpriteCmd.CurrentState != MainState.enHURT &&!ButtonSound.isClick(x, y)){
rgSpriteCmd.CurrentState = MainState.enWALKUP;//向上走
}
else if ((y - rgSpriteCmd.y - rgSpriteCmd.unHeight / 2) >= (x - rgSpriteCmd.x - rgSpriteCmd.unWidth / 2)
&& (y - rgSpriteCmd.y - rgSpriteCmd.unHeight / 2) >= -(x - rgSpriteCmd.x - rgSpriteCmd.unWidth / 2)
&& !rgSpriteCmd.IsDownStop && rgSpriteCmd.CurrentState != MainState.enHURT &&!ButtonSound.isClick(x, y)){
rgSpriteCmd.CurrentState = MainState.enWALKDOWN;//向下走
}
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
public Boolean CheckHitEnemy(SpriteCmd Cmd,SpriteCmd SpCmd) {
if (Cmd.unLayer!=255 && SpCmd.unLayer != 255) {
if (Cmd.x Cmd.unWidth > SpCmd.x && Cmd.x < SpCmd.x SpCmd.unWidth &&
Cmd.y Cmd.unHeight > SpCmd.y && Cmd.y < SpCmd.y SpCmd.unHeight) {
return true;
}
}
return false;
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
public void onAccuracyChanged(Sensor sensor, int accuracy) {
// TODO Auto-generated method stub
}
public void onSensorChanged(SensorEvent event) {
// TODO Auto-generated method stub
x_sensor = event.values[0]; // 手机横向翻滚
// x>0 说明当前手机左翻 x<0右翻
y_sensor = event.values[1]; // 手机纵向翻滚
// y>0 说明当前手机下翻 y<0上翻
z_sensor = event.values[2]; // 屏幕的朝向
// z>0 手机屏幕朝上 z<0 手机屏幕朝下
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////退出游戏时释放所有资源///////////////////////////////////////////////////////////////////////////////////////
public void CloseGame()
{
FreeAppData(); // 释放应用所有资源
((picture)this.getContext()).CloseActivity(); // 关闭应用
}
public void FreeAppData()
{
//释放图片资源
ReleaseImage(imgPlane);
ReleaseImage(imgStar);
ReleaseImage(imgStar);
ReleaseImage(imgEnemy1);
ReleaseImage(imgEnemy2);
ReleaseImage(imgEnemy3);
ReleaseImage(imgEnemy4);
ReleaseImage(imgBomb);
ReleaseImage(imgPassLerver);
ReleaseImage(imgBloodBg);
ReleaseImage(imgBlood);
ReleaseImage(imgBackground);
ReleaseImage(imgStart);
ReleaseImage(imgHelp);
ReleaseImage(imgScore);
ReleaseImage(imgDetail);
ReleaseImage(imgFirst);
ReleaseImage(imgSecond);
ReleaseImage(imgHelpDisplay);
ReleaseImage(imgScoreDisplay);
ReleaseImage(imgDetailDisplay);
ReleaseImage(imgReturn);
ReleaseImage(imgSoundOn);
ReleaseImage(imgSoundOff);
if (mediaPlayer != null)
{
mediaPlayer.stop(); // 停止播放声音
mediaPlayer.release(); // 释放mediaPlayer资源
mediaPlayer = null; // 对象置空
}
// 释放声音资源
}
public static void FreeMedia()
{
if (mediaPlayer != null)
{
mediaPlayer.stop(); // 停止播放声音
mediaPlayer.release(); // 释放mediaPlayer资源
mediaPlayer = null; // 对象置空
}
}
public static Bitmap ReleaseImage(Bitmap bitmap)
{
if (bitmap != null && !bitmap.isRecycled())
{
//bitmap.recycle(); // 用于回收该bitmap所占用的内存
bitmap = null; // 将bitmap置空
}
return null; // 返回空,将原图片对象置为空
}
}
代码片段和文件信息
/** Automatically generated file. DO NOT MODIFY */
package com.pic;
public final class BuildConfig {
public final static boolean DEBUG = true;
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 475 2015-07-03 10:18 .classpath
文件 845 2013-05-21 16:31 .project
目录 0 2015-07-03 10:16 .settings\
文件 177 2015-07-03 10:16 .settings\org.eclipse.jdt.core.prefs
文件 981 2015-07-03 10:22 AndroidManifest.xm
目录 0 2013-05-31 10:55 assets\
目录 0 2015-07-03 10:30 bin\
目录 0 2015-01-11 23:26 gen\
目录 0 2015-01-11 23:26 gen\com\
目录 0 2015-07-03 10:26 gen\com\pic\
文件 149 2015-07-03 10:19 gen\com\pic\BuildConfig.java
文件 2507 2015-07-03 10:26 gen\com\pic\R.java
文件 1159 2012-12-20 10:04 proguard.cfg
文件 562 2015-07-03 10:23 project.properties
目录 0 2015-07-03 10:16 res\
目录 0 2015-07-03 10:25 res\drawable-hdpi\
文件 2051 2015-01-16 12:25 res\drawable-hdpi\back.png
文件 21926 2015-01-16 13:10 res\drawable-hdpi\bg1.png
文件 28904 2015-01-16 12:17 res\drawable-hdpi\bg2.png
文件 20144 2015-01-16 14:52 res\drawable-hdpi\bg3.png
文件 4127 2013-05-20 15:20 res\drawable-hdpi\bg
文件 4042 2013-05-20 15:20 res\drawable-hdpi\bg
文件 130 2015-01-16 16:00 res\drawable-hdpi\blood.png
文件 3783 2013-05-21 10:44 res\drawable-hdpi\bloodbg.png
文件 3683 2013-05-20 15:45 res\drawable-hdpi\bullet.png
文件 4623 2013-04-19 15:05 res\drawable-hdpi\cloud.png
文件 3622 2015-01-16 12:24 res\drawable-hdpi\detail.png
文件 58494 2015-01-16 12:37 res\drawable-hdpi\detaildisplay.png
文件 818 2015-01-16 13:32 res\drawable-hdpi\enemy1.png
文件 798 2015-01-16 14:14 res\drawable-hdpi\enemy2.png
文件 762 2015-01-16 15:28 res\drawable-hdpi\enemy3.png
............此处省略81个文件信息
相关资源
- 书籍《精通android游戏开发》pdf
- android ExpandableTextView
- rabit小游戏源码
- Android 仿关灯游戏(游戏开发-17_166)
- Android 话筒吹雾小游戏(传感器-12_1
- Android 猜牌小游戏(游戏开发-17_164)
- Android汤姆猫小游戏
- java贪吃蛇 小游戏源码
- 简单的游戏开始界面
- 电子邮件系统
-
libgdx开发的小游戏源码(me
tagun) - android 防抢滩登陆游戏 源码
- android 手机钢琴游戏app源码(按键发出
- android编写的数字拼图游戏带详细注释
- 《Android游戏开发_杜剑_华南理工》p
- Android游戏源码大合集主要是AndEngine和
- 2048游戏源码(H5游戏源码).zip
- HTML5 塔防游戏源码
- Android 五子棋游戏(游戏开发-17_161)
- Android 仿像素鸟游戏(游戏开发-17_1
- Android 仿飞机大战(游戏开发-17_170)
- Android2048小游戏源码
- android打地鼠小游戏app源码
- java拼图小游戏
- java游戏之潜艇大战
- 游戏-Java扫雷
- java游戏打飞机(含论文)
- Java实现猜数字游戏
- java 写的简单的打字游戏
- java 五子棋游戏源码
评论
共有 条评论