本文实例讲述了Android使用libgdx实现模拟方向键控制角色移动的方法。分享给大家供大家参考,具体如下:
package com.demo;import android.os.Bundle;import com.badlogic.gdx.backends.android.AndroidApplication;//Libgdx的Texture与Sprite使用public class LibgdxActivity extends AndroidApplication {public void onCreate(Bundle bundle) {super.onCreate(bundle);// 初始化游戏屏幕,并设置是否支持GLES 2.0,如果您对向下兼容没什么需要选择true即可(2.1以上),否则选择false。// initialize(new FirstGame(), true);initialize(new Box2DDemo(), true);}}
package com.demo;import com.badlogic.gdx.Gdx;import com.badlogic.gdx.graphics.Texture;import com.badlogic.gdx.graphics.g2d.SpriteBatch;import com.badlogic.gdx.scenes.scene2d.Actor;public class FirstActor extends Actor{private Texture texture;@Overridepublic void draw(SpriteBatch batch, float arg1) {batch.draw(texture, this.x, this.y);}@Overridepublic Actor hit(float arg0, float arg1) {if (x > 0 && y > 0 && this.height > y && this.width > x) {return this;} else {return null;}}@Overridepublic boolean touchDown(float arg0, float arg1, int arg2) {// TODO Auto-generated method stubreturn false;}@Overridepublic void touchDragged(float arg0, float arg1, int arg2) {// TODO Auto-generated method stub}@Overridepublic void touchUp(float arg0, float arg1, int arg2) {// TODO Auto-generated method stub}public FirstActor(String name) {super(name);texture = new Texture(Gdx.files.internal("bt.png"));this.height = texture.getHeight();this.width = texture.getWidth();}}
package com.demo;import android.util.Log;import com.badlogic.gdx.ApplicationListener;import com.badlogic.gdx.Gdx;import com.badlogic.gdx.graphics.GL10;import com.badlogic.gdx.graphics.Texture;import com.badlogic.gdx.graphics.g2d.NinePatch;import com.badlogic.gdx.scenes.scene2d.Actor;import com.badlogic.gdx.scenes.scene2d.Stage;import com.badlogic.gdx.scenes.scene2d.ui.Button;import com.badlogic.gdx.scenes.scene2d.ui.ClickListener;import com.badlogic.gdx.scenes.scene2d.ui.Button.ButtonStyle;class FirstGame implements ApplicationListener,ClickListener {private static String UP = "up";private static String DOWN = "down";private static String LEFT = "left";private static String RIGHT = "right";//舞台private Stage stage;//演员private Actor firstActor;private Texture texture;private Button buttonUp,buttonDown,buttonLeft,buttonRight;private NinePatch patch1, patch2;@Overridepublic void create() {stage = new Stage(Gdx.graphics.getWidth(), Gdx.graphics.getHeight(), true);firstActor = new FirstActor("renwu");buttonUp = initButton(UP,40,80);buttonDown = initButton(DOWN,40,0);buttonLeft = initButton(LEFT,0,40);buttonRight = initButton(RIGHT,80,40);buttonUp.setClickListener(this);buttonDown.setClickListener(this);buttonLeft.setClickListener(this);buttonRight.setClickListener(this);stage.addActor(firstActor);stage.addActor(buttonUp);stage.addActor(buttonDown);stage.addActor(buttonLeft);stage.addActor(buttonRight);Gdx.input.setInputProcessor(stage);}@Overridepublic void render() {// 清屏Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);stage.act(Gdx.graphics.getDeltaTime());stage.draw();}@Overridepublic void dispose() {// 释放占用的资源stage.dispose();}@Overridepublic void resume() {}@Overridepublic void pause() {}@Overridepublic void resize(int width, int height) {}public Button initButton(String name,int x,int y){if(name.equals(UP)){texture = new Texture(Gdx.files.internal("up_alt.png"));}else if(name.equals(DOWN)){texture = new Texture(Gdx.files.internal("down_alt.png"));}else if(name.equals(LEFT)){texture = new Texture(Gdx.files.internal("back_alt.png"));}else if(name.equals(RIGHT)){texture = new Texture(Gdx.files.internal("forward_alt.png"));}patch1 = new NinePatch(texture, 0, 0, 0, 0);Button button = new Button(new ButtonStyle(patch1, patch1, patch1, 0f, 0f, 0f, 0f, null, null), name);button.x = x;button.y = y;button.width = 32;button.height = 32;return button;}@Overridepublic void click(Actor button) {if(button.equals(buttonUp)){Actor actor = button.parent.findActor("renwu");;actor.y += 10;Log.i("touch", "up");}else if(button.equals(buttonDown)){Actor actor = button.parent.findActor("renwu");;actor.y -= 10;Log.i("touch", "down");}else if(button.equals(buttonLeft)){Actor actor = button.parent.findActor("renwu");;actor.x -= 10;Log.i("touch", "left");}else if(button.equals(buttonRight)){Actor actor = button.parent.findActor("renwu");;actor.x += 10;Log.i("touch", "right");}}}
希望本文所述对大家Android程序设计有所帮助。