if (father.y + father.r * 2 >= BallView.GROUND_LING && father.v_y > 0) {
father.v_x = father.v_x * (1 - father.impactFactor); // 衰减水平方向的速度
father.v_y = 0 - father.v_y * (1 - father.impactFactor); // 衰减竖直方向的速度并改变方向
if (Math.abs(father.v_y) < BallView.DOWN_ZERO) { // 判断撞地衰减后的速度,太小就停止运动
this.flag = false;
} else {
// 撞地后的速度还可以弹起继续下一阶段的运动
father.startX = father.x;
father.timeX = System.nanoTime();
father.startY = father.y;
father.timeY = System.nanoTime();
father.startVY = father.v_y;
}
}
3.视图类BallView
BallView是负责画面渲染的视图类,其中声明了一些物理计算时要使用的静态常量,同时还声明了程序中要绘制的图片资源以及要绘制的小球对象列表。BallView类继承自android.view包下SurfaceView类。SurfaceView不同于普通的View,其具有不同的绘制机理,适合用于开发游戏程序。使用SurfaceView需要实现SurfaceHolder.Callback接口,该接口可以对SurfaceView进行编辑等操作,还可以监控SurfaceView的变化。
BallView类:
-
package com.ball;
import java.util.ArrayList;
-
import java.util.Random;
import android.content.Context;
-
import android.content.res.Resources;
import android.graphics.Bitmap;