AndEngine中移动背景(上下移动、斜着移动)
来源:互联网 发布:java基础入门课后笔记 编辑:程序博客网 时间:2024/05/21 18:50
在AndEngine中移动背景以使得道具/人物在屏幕地图上移动,类似赛车、滑雪等游戏看着像人物在移动,其实动的是背景,所以移动背景就可以模拟出在屏幕上的移动
在AndEngineExamples中有一个移动背景的例子:AutoParallaxBackgroundExample,在该类中使用了AutoParallaxBackground作为自循环绘画的背景在使用
但该例子中只有横向背景的移动,竖向方向的移动没有做,看AndEngine中的代码也没有关于竖向方向的计算、绘图,因此扩充了ParallaxBackground中的ParallaxEntity实现以便于移动背景的横向、竖向、斜向的移动,代码见下面:替换掉原版的后重新生成andengine.jar,然后放到自己的工程下面即可
public static class ParallaxEntity {// ===========================================================// Constants// ===========================================================// ===========================================================// Fields// ===========================================================float mParallaxFactorX;float mParallaxFactorY;final IAreaShape mAreaShape;// ===========================================================// Constructors// ===========================================================public ParallaxEntity(final float pParallaxFactorX, final IAreaShape pAreaShape) {this.mParallaxFactorX = pParallaxFactorX;this.mParallaxFactorY = 0;this.mAreaShape = pAreaShape;}public ParallaxEntity(final float pParallaxFactorX, final float pParallaxFactorY, final IAreaShape pAreaShape) {this.mParallaxFactorX = pParallaxFactorX;this.mParallaxFactorY = pParallaxFactorY;this.mAreaShape = pAreaShape;}// ===========================================================// Getter & Setter// ===========================================================// ===========================================================// Methods for/from SuperClass/Interfaces// ===========================================================// ===========================================================// Methods// ===========================================================public void onDraw(final GLState pGLState, final Camera pCamera, final float pParallaxValue) {pGLState.pushModelViewGLMatrix();{final float cameraWidth = mParallaxFactorX != 0 ? pCamera.getWidth() : 0;final float cameraHeight = mParallaxFactorY != 0 ? pCamera.getHeight() : 0;final float shapeWidthScaled = this.mAreaShape.getWidthScaled();final float shapeHeightScaled = this.mAreaShape.getHeightScaled();float baseOffsetX = mParallaxFactorX != 0 ? (pParallaxValue * this.mParallaxFactorX) % shapeWidthScaled : 0;float baseOffsetY = mParallaxFactorY != 0 ? (pParallaxValue * this.mParallaxFactorY) % shapeHeightScaled : 0;//while(baseOffsetX > 0) {baseOffsetX -= shapeWidthScaled;}while(baseOffsetY > 0) {baseOffsetY -= shapeHeightScaled;}pGLState.translateModelViewGLMatrixf(baseOffsetX, baseOffsetY, 0);//float currentMaxX = baseOffsetX;float currentMaxY = baseOffsetY;booleanbX = mParallaxFactorX != 0 ? true : false;booleanbY = mParallaxFactorY != 0 ? true : false;do {this.mAreaShape.onDraw(pGLState, pCamera);if (bX && bY){pGLState.translateModelViewGLMatrixf(shapeWidthScaled, shapeHeightScaled, 0);currentMaxX += shapeWidthScaled;currentMaxY += shapeHeightScaled;}else if (bX && !bY){pGLState.translateModelViewGLMatrixf(shapeWidthScaled, 0, 0);currentMaxX += shapeWidthScaled;}else if (!bX && bY){pGLState.translateModelViewGLMatrixf(0, shapeHeightScaled, 0);currentMaxY += shapeHeightScaled;}bX = currentMaxX < cameraWidth ? true : false;bY = currentMaxY < cameraHeight ? true : false;} while(bX || bY);}pGLState.popModelViewGLMatrix();}// ===========================================================// Inner and Anonymous Classes// ===========================================================}
//位于ParallaxBackground类中
- AndEngine中移动背景(上下移动、斜着移动)
- Andengine的自动视差背景AutoParallaxBackground(背景移动)
- 上下移动
- treelist上下节点上下移动
- TeeView中实现节点的上下移动(C#)
- emacs中配置上下移动行
- android中实现图片的上下移动
- eclipse中,如何正行上下移动
- 记录上下移动Community_CommunitiesMoveDown
- 上下移动单元格
- ListBox实现上下移动
- 上下移动的层
- 【js】左右上下移动
- 元素上下移动
- 广告上下移动
- datagridview行上下移动
- 表格行上下移动
- GridView上下移动记录
- sed 入门
- 黑马程序员-交通灯管理系统
- WPF在Windows XP下的一个兼容问题
- 基于maven-cargo-plugin 的tomcat7.x热部署记录
- linux 更改用户权限
- AndEngine中移动背景(上下移动、斜着移动)
- 在Tomcat中配置虚拟主机
- Objective-C中的protocol用法
- 一些看英语文档的笔记
- 实时数据库系统及其特征
- VS 的makefile工程
- POJ-1389-Area of Simple Polygons
- hdu2187 悼念512汶川大地震遇难同胞——老人是真饿了 (贪心)
- ext tabpanel background image Self Adaptive