⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gamebg.java

📁 Android开发精典案例60个
💻 JAVA
字号:
package com.pg;

import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Paint;

/**
 * @author Himi
 *
 */
public class GameBg {
	//游戏背景的图片资源
	//为了循环播放,这里定义两个位图对象,
	//其资源引用的是同一张图片
	private Bitmap bmpBackGround1;
	private Bitmap bmpBackGround2;
	//游戏背景坐标
	private int bg1x, bg1y, bg2x, bg2y;
	//背景滚动速度
	private int speed = 3;

	//游戏背景构造函数
	public GameBg(Bitmap bmpBackGround) {
		this.bmpBackGround1 = bmpBackGround;
		this.bmpBackGround2 = bmpBackGround;
		//首先让第一张背景底部正好填满整个屏幕
		bg1y = -Math.abs(bmpBackGround1.getHeight() - MySurfaceView.screenH);
		//第二张背景图紧接在第一张背景的上方
		//+101的原因:虽然两张背景图无缝隙连接但是因为图片资源头尾
		//直接连接不和谐,为了让视觉看不出是两张图连接而修正的位置
		bg2y = bg1y - bmpBackGround1.getHeight() + 111;
	}
	//游戏背景的绘图函数
	public void draw(Canvas canvas, Paint paint) {
		//绘制两张背景
		canvas.drawBitmap(bmpBackGround1, bg1x, bg1y, paint);
		canvas.drawBitmap(bmpBackGround2, bg2x, bg2y, paint);
	}
	//游戏背景的逻辑函数
	public void logic() {
		bg1y += speed;
		bg2y += speed;
		//当第一张图片的Y坐标超出屏幕,
		//立即将其坐标设置到第二张图的上方
		if (bg1y > MySurfaceView.screenH) {
			bg1y = bg2y - bmpBackGround1.getHeight() + 111;
		}
		//当第二张图片的Y坐标超出屏幕,
		//立即将其坐标设置到第一张图的上方
		if (bg2y > MySurfaceView.screenH) {
			bg2y = bg1y - bmpBackGround1.getHeight() + 111;
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -