[LIBGDX学习]LibGDX代码详解(五)Box2D
2018-02-21 15:13
597 查看
import com.badlogic.gdx.Application; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.InputMultiplexer; import com.badlogic.gdx.InputProcessor; import com.badlogic.gdx.input.GestureDetector; import com.badlogic.gdx.input.GestureDetector.GestureListener; import com.badlogic.gdx.math.Vector2; import com.mygdx.game.box2d.ApplyForce; import com.mygdx.game.box2d.BodyTypes; import com.mygdx.game.box2d.Box2DTest; import com.mygdx.game.box2d.Bridge; import com.mygdx.game.box2d.Cantilever; import com.mygdx.game.box2d.Chain; import com.mygdx.game.box2d.CharacterCollision; import com.mygdx.game.box2d.CollisionFiltering; import com.mygdx.game.box2d.ContactListenerTest; import com.mygdx.game.box2d.ContinuousTest; import com.mygdx.game.box2d.ConveyorBelt; import com.mygdx.game.box2d.DebugRendererTest; import com.mygdx.game.box2d.OneSidedPlatform; import com.mygdx.game.box2d.Prismatic; import com.mygdx.game.box2d.Pyramid; import com.mygdx.game.box2d.SimpleTest; import com.mygdx.game.box2d.SphereStack; import com.mygdx.game.box2d.VaryingRestitution; import com.mygdx.game.box2d.VerticalStack; import com.mygdx.game.utils.GdxTest; import static com.badlogic.gdx.physics.box2d.Shape.Type.Chain; public class Box2DTestCollection extends GdxTest implements InputProcessor, GestureListener { private final Box2DTest[] tests = {new DebugRendererTest(), new CollisionFiltering(), new Chain(), new Bridge(), new SphereStack(), new Cantilever(), new ApplyForce(), new ContinuousTest(), new Prismatic(), new CharacterCollision(), new BodyTypes(), new SimpleTest(), new Pyramid(), new OneSidedPlatform(), new VerticalStack(), new VaryingRestitution(), new ConveyorBelt()}; private int testIndex = 0; private Application app = null; @Override public void render () { tests[testIndex].render(); } @Override public void create () { if (this.app == null) { this.app = Gdx.app; Box2DTest test = tests[testIndex]; test.create(); } InputMultiplexer multiplexer = new InputMultiplexer();// 用来处理多个InputProcessor的情况 multiplexer.addProcessor(this); multiplexer.addProcessor(new GestureDetector(this));// 第二个是gesture detector? Gdx.input.setInputProcessor(multiplexer); } @Override public void dispose () { tests[testIndex].dispose(); } @Override public boolean keyDown (int keycode) { tests[testIndex].keyDown(keycode); return false; } @Override public boolean keyTyped (char character) { tests[testIndex].keyTyped(character); return false; } @Override public boolean keyUp (int keycode) { tests[testIndex].keyUp(keycode); return false; } @Override public boolean touchDown (int x, int y, int pointer, int button) { tests[testIndex].touchDown(x, y, pointer, button); return false; } @Override public boolean touchDragged (int x, int y, int pointer) { tests[testIndex].touchDragged(x, y, pointer); return false; } @Override public boolean touchUp (int x, int y, int pointer, int button) { tests[testIndex].touchUp(x, y, pointer, button); return false; } @Override public boolean mouseMoved (int x, int y) { return false; } @Override public boolean scrolled (int amount) { return false; } @Override public boolean touchDown (float x, float y, int pointer, int button) { return false; } @Override public boolean tap (float x, float y, int count, int button) { app.log("TestCollection", "disposing test '" + tests[testIndex].getClass().getName()); tests[testIndex].dispose(); testIndex++; if (testIndex >= tests.length) testIndex = 0; Box2DTest test = tests[testIndex]; test.create(); app.log("TestCollection", "created test '" + tests[testIndex].getClass().getName()); return false; } @Override public boolean longPress (float x, float y) { return false; } @Override public boolean fling (float velocityX, float velocityY, int button) { return false; } @Override public boolean pan (float x, float y, float deltaX, float deltaY) { return false; } @Override public boolean panStop (float x, float y, int pointer, int button) { return false; } @Override public boolean zoom (float originalDistance, float currentDistance) { return false; } @Override public boolean pinch (Vector2 initialFirstPointer, Vector2 initialSecondPointer, Vector2 firstPointer, Vector2 secondPointer) { return false; } @Override public void pinchStop () { } }
相关文章推荐
- [LIBGDX学习]LibGDX代码详解(十五)Box2D
- [LIBGDX学习]LibGDX代码详解(十七) Box2D character collision
- [LIBGDX学习]LibGDX代码详解(三)Box2D character control
- [LIBGDX学习]LibGDX代码详解(十八)Box2D body type
- [LIBGDX学习]LibGDX代码详解(九)Box2D revolute joint
- [LIBGDX学习]LibGDX代码详解(十四)Box2D apply force
- [LIBGDX学习]LibGDX代码详解(二十二)Box2D 弹性
- [LIBGDX学习]LibGDX代码详解(四)Box2D
- [LIBGDX学习]LibGDX代码详解(七)Box2D
- [LIBGDX学习]LibGDX代码详解(十六)Box2D prismatic joint
- [LIBGDX学习]LibGDX代码详解(二十三)Box2D 传送带
- [LIBGDX学习]LibGDX代码详解(十一)Box2D bridge
- [LIBGDX学习]LibGDX代码详解(十三)Box2D wield joint
- [LIBGDX学习]LibGDX代码详解(十八)Box2D
- [LIBGDX学习]LibGDX代码详解(十九)Box2D 金字塔
- [LIBGDX学习]LibGDX代码详解(二十一)Box2D 子弹穿透
- LIBGDX学习]LibGDX代码详解(四十三)Bullet 镜头扫描
- [LIBGDX学习]LibGDX代码详解(三十六)Bullet
- LIBGDX学习]LibGDX代码详解(三十九)Bullet Ragdoll
- [LIBGDX学习]LibGDX代码详解(二十四)Bresenham快速画直线算法