int newY) {Rect rect = new Rect(x
小编导读:
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;
}
}
热门资讯
05-20
·"privilegeDespAsJson":{"bold":05-20
· 赌球术语5b零售业关店潮继续 "05-20
·对应iOS和Android双平台05-20
·七分真爱 三分挣扎:听女司姬自05-20
·520游戏热爱者:从兴趣到职业 做05-20
·系列前作在日本上市的首周销量分05-20
·不仅可以与众小伙伴们投身刺激无05-20
·和申请注册商标;任何违约及抢注
传奇特荐
05-04
·《期间》评最具影响力50款科技产05-05
·虐心游戏《Choppa》评测:虐的就05-06
·慈文传媒第一季度矫正通告:上半05-19
·女主播直播斗鸡游戏 衣着暴露动05-19
·眼下就是花式告白的最佳时机05-19
·《白发魔女传》删档测试今日开启05-19
·整体音乐让游戏带入感非常不错05-20
·《诛仙手游》中还有凄凉肃杀的空05-19
·迪士尼推出VR虚拟现实app 游戏和05-19
·【图】盛大游戏股权之争再起变化