当前位置:网站首页 > 游戏 >

int newY) {Rect rect = new Rect(x

来源:www.999sf.com | 编辑:999搜服 | 发布时间:2016-05-21 02:56

小编导读:

一、示意图:1)开始画面: 2)游戏中画面: 3)结束画面: 二、分析:1、游戏中的每个元素都可封装成对象, 1)开始按钮与结束按钮可封装成GameButton对象: 属


1)开始按钮与结束按钮可封装成GameButton对象:
3、除了绘制之外,游戏是有状态的,一般来说,游戏有三种状态:等待状态、运行状态和结束状态
方法有draw方法,resetHeigt方法(用于在游戏结束后恢复其高度)
3)Floor地板对象:
5)管道对象
3)运行状态主要是对管道、地板等对象的不断绘制

2、游戏绘制在SurfaceView界面上
/** * 地板 * * @Project App_View * @Package com.android.view.flybird * @author chenlin * @version 1.0 * @Date 2014年5月6日 */ public class Floor { // 地板位置游戏面板高度的4/5到底部 private static final float FLOOR_Y_POS_RADIO = 4 / 5F; // height of 4/5 private int x, y;// 坐标 private BitmapShader mBitmapShader;// 填充物 private int mGameWidth;// 地板宽高 private int mGameHeight; public Floor(int gameWidth, int gameHeight, Bitmap bgBitmap) { this.mGameHeight = gameHeight; this.mGameWidth = gameWidth; this.y = (int) (mGameHeight * FLOOR_Y_POS_RADIO); mBitmapShader = new BitmapShader(bgBitmap, TileMode.CLAMP, TileMode.CLAMP); } /** * 绘制自己 * * @param canvas */ public void draw(Canvas canvas, Paint paint) { // 进行平移,如果移出的部分超过屏幕的宽度,就重新让坐标移动到源位置 if (-x > mGameWidth) { x = x % mGameWidth; } /** * save() : 用来保存Canvas的状态,save()方法之后的代码,可以调用Canvas的平移、放缩、旋转、裁剪等操作! */ canvas.save(Canvas.MATRIX_SAVE_FLAG); //平移到指定位置 canvas.translate(x, y); paint.setShader(mBitmapShader); canvas.drawRect(x, 0, -x + mGameWidth, mGameHeight - y, paint); /** * restore():用来恢复Canvas之前保存的状态(可以想成是保存坐标轴的状态),防止save()方法代码之后对Canvas执行的操作,继续对后续的绘制会产生影响,通过该方法可以避免连带的影响 */ canvas.restore(); paint.setShader(null); } public int getX() { return x; } public void setX(int x) { this.x = x; } public int getY() { return y; } }

文章- int newY) {Rect rect = new Rect(x,是由http://999sf.com提供,转载请注明版权出处!

上一篇:于英涛详解新华三战略:双品牌运营下的市场游戏平衡者

下一篇:苏宏章亦已接受组织调查