首页 > 系统 > Android > 正文

Android使用libgdx实现模拟方向键控制角色移动的方法

2020-04-11 11:06:11
字体:
来源:转载
供稿:网友

本文实例讲述了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;  @Override  public void draw(SpriteBatch batch, float arg1) {    batch.draw(texture, this.x, this.y);  }  @Override  public Actor hit(float arg0, float arg1) {    if (x > 0 && y > 0 && this.height > y && this.width > x) {      return this;    } else {      return null;    }  }  @Override  public boolean touchDown(float arg0, float arg1, int arg2) {    // TODO Auto-generated method stub    return false;  }  @Override  public void touchDragged(float arg0, float arg1, int arg2) {    // TODO Auto-generated method stub  }  @Override  public 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;  @Override  public 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);  }  @Override  public void render() {    // 清屏    Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);    stage.act(Gdx.graphics.getDeltaTime());    stage.draw();  }  @Override  public void dispose() {    // 释放占用的资源    stage.dispose();  }  @Override  public void resume() {  }  @Override  public void pause() {  }  @Override  public 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;  }  @Override  public 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程序设计有所帮助。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表