当前位置: 首页 > 编程笔记 >

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

尹英华
2023-03-14
本文向大家介绍Android使用libgdx实现模拟方向键控制角色移动的方法,包括了Android使用libgdx实现模拟方向键控制角色移动的方法的使用技巧和注意事项,需要的朋友参考一下

本文实例讲述了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程序设计有所帮助。

 类似资料:
  • 本文向大家介绍js实现键盘控制DIV移动的方法,包括了js实现键盘控制DIV移动的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了js实现键盘控制DIV移动的方法。分享给大家供大家参考。具体分析如下: css样式部分: js部分: 说明: 上:↑ 下:↓ 左:← 右:→ Ctrl + 1 : 背景变为绿色 Ctrl + 2 : 背景变为黄色 Ctrl + 3 : 背景变为蓝色 Ctrl

  • 我正在做一个RPG游戏,但是,我现在有一个错误。玩家的角色可以在所有四个基本方向上移动,但如果你向右、向上或向下移动,玩家就会被卡住。 此外,这个错误似乎有一定的逻辑性: 如果向下移动,角色将卡在向下移动的循环中 除非按下向上箭头,否则玩家将开始一个新的向上无限循环 除非按下向右箭头,否则玩家将开始一个新的向右无限循环 所以权利似乎优先于上,而上优先于下。 奇怪的是,向左移动工作得很完美,即使当角

  • 本文向大家介绍javascript模拟评分控件实现方法,包括了javascript模拟评分控件实现方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了javascript模拟评分控件实现方法。分享给大家供大家参考。具体实现方法如下: 希望本文所述对大家的javascript程序设计有所帮助。

  • 我制作了一个身体,我想在点击按钮时移动它,我已经能够使用但它不准确。假设我想以40的线速度移动我的身体7米,我该怎么做? 我可以用身体。setTransform()但我需要身体真正移动,而不是传送。提前谢谢

  • 本文向大家介绍JS实现窗口加载时模拟鼠标移动的方法,包括了JS实现窗口加载时模拟鼠标移动的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了JS实现窗口加载时模拟鼠标移动的方法。分享给大家供大家参考。具体实现方法如下: 希望本文所述对大家的javascript程序设计有所帮助。

  • 问题内容: 我正在尝试使用富有想象力的Mock测试库测试Django应用程序时模拟某些东西。我似乎无法完全正常工作,我正在尝试这样做: 我究竟做错了什么? 问题答案: 啊,我对在哪里应用该补丁装饰感到困惑。固定:

  • 本文向大家介绍Js实现网页键盘控制翻页的方法,包括了Js实现网页键盘控制翻页的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Js实现网页键盘控制翻页的方法。分享给大家供大家参考。具体实现方法如下: 键盘控制翻页效果我想我们不少见了,经常在很多网站特别是相册的效果都可以直接使用键盘进行上下页进行翻页了,原理很简单,只要利用js监测用户是否有按上下键即可实现。 举例如下: js代码如下:

  • 本文向大家介绍Android launcher中模拟按home键的实现,包括了Android launcher中模拟按home键的实现的使用技巧和注意事项,需要的朋友参考一下 Android launcher中模拟按home键的实现      Android中,如果想把stack中的某个Activity moveTaskToFront,可以定义一个BroadcastReceiver接收某种类型的B