安卓飞机大战(一) 背景移动

在制作游戏时,背景可以移动,原理就是    两张图片的循环移动。

package com.example.manager;

import com.example.agame.R;
import com.example.entity.Enemy;

import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Rect;
import android.view.View;

public class BackgroundManager{
    private Bitmap background=null;
    private Rect secrect,desrect,desrect2;
    private int dy1,dy2;
    private int x,y;
    public BackgroundManager(View view){
        x=view.getWidth();
        y=view.getHeight();
        dy2=-view.getHeight();
        background=BitmapFactory.decodeResource(view.getResources(), R.drawable.background);
        secrect=new Rect(0,0,background.getWidth(),background.getHeight());
        desrect=new Rect(0,dy1,x,y);
        desrect2=new Rect(0,dy2,x,y);
        
    }
    public void drawbackground(Canvas canvas){
        dy1+=3;
        dy2+=3;
        desrect.set(0,dy1,x,y+dy1);
        desrect2.set(0,dy2,x,y+dy2);
  
        canvas.drawBitmap(background,secrect,desrect,null);//第一张图画在屏幕中央
        canvas.drawBitmap(background,secrect,desrect2,null);//第二张图画在屏幕上方
  
        if(dy1>=y)
            dy1=-y+3;//为了背景连接和谐
        if(dy2>=y)
            dy2=-y+4;
    }

}

这样就能实现背景循环移动啦!!!

时间: 2024-12-18 12:50:22

安卓飞机大战(一) 背景移动的相关文章

安卓飞机大战(二) SurfaceView实现自制背景

用SurfaceView写一个自制的背景图,并且可以移动,加上安卓飞机大战(一)中的BackgroundManager类,可以直接使用 GameView代码: public class GameView extends SurfaceView implements SurfaceHolder.Callback,Runnable{    private SurfaceHolder hd=null;    private Canvas canvas=null;    private Backgrou

安卓飞机大战(五) 飞机瞬移的解决方法

在游戏开发时,角色可以随手指移动,但是当手指移动到屏幕另一个位置时,角色可以瞬移 解决方法如下: 在手指触摸屏幕时进行判定,如果手指点到了角色并且在屏幕上进行滑动,角色才移动 具体代码如下: 定义一个值a 当手指点到了角色并且在屏幕上进行滑动,a的值变为1,当手指离开屏幕,a的值变为0,当a=1时角色才进行移动. if(event.getAction()==MotionEvent.ACTION_DOWN&&event.getX()>=myplane.x&&event.

安卓飞机大战(六) 动态Gif图的添加

有两种方法 第一种  麻烦,需要把一张gif图分解帧,然后将帧一张一张绘制,很麻烦. 第二种,可以直接在网上下载一个drawable.gif 包 包里libs文件夹下有以下文件 将这些文件全部复制到你写的安卓程序的libs文件夹下(有两个没用,不过没关系,都复制进去就行),这样gif 包就完成了,接下来就可以添加gif图片了!! 新建一个Layout <?xml version="1.0" encoding="utf-8"?><LinearLayo

安卓飞机大战(八) 添加视频文件

在安卓应用里添加一个视频文件,需要在res中添加一个名为raw(不能乱起)的文件夹,里面存放你要播放的视频文件 代码如下: 1.在lanyout中添加一个videoview <?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_

安卓飞机大战源码,上图!!!!运行效果如下!!!

运行效果图如下: 游戏运行情况就是这样,学安卓没多久,欢迎大家提意见给我 !! 源码下载地址:http://down.51cto.com/data/2108343 我的qq:986587155 欢迎大家加我好友!!一起讨论安卓问题!

安卓飞机大战(三) 弹出对话框

在游戏时,不管是退出游戏还是选择战机,都要弹出一个对话框,需要以下代码 按一个按钮弹出对话框 Layout文件:(添加一个按钮) <Button        android:id="@+id/button1"        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:text="准备起飞

安卓飞机大战(四) 实现从MysurfaceView到 Activity的跳转

从一个Activity到另一个Acitvity是简单的 但是怎么从自己写的surfaceview跳转到一个Activity呢? 在 MysurfaceView (extends SurfaceView)中: public class GameView extends SurfaceView implements SurfaceHolder.Callback,Runnable{ private Context context=this.getContext(); private boolean e

安卓飞机大战(七) 存储用户数据并实现增删改查

将用户的数据进行存储,利用SQLiteOpenHelper 1.建一个mysqlhelp类,扩展自SQLiteOpenHelper import android.content.Context;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteDatabase.CursorFactory;import android.database.sqlite.SQLiteOpenHelper

飞机大战原生代码版

飞机大战需要背景图,飞机,子弹,敌机 下面写的是css代码实现子弹的运动 for (var i = 0; i < this.objB.arr.length; i++) { var newArr = this.objB.arr[i].split('|');//[id|top|left] var eleB = document.getElementById(newArr[0]); newArr[1] = parseInt(newArr[1]) - 1; //将上一个的newArr1减1并赋值 //