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

 更新时间:2015年12月29日 14:45:56   作者:q757989418  
这篇文章主要介绍了Android使用libgdx实现模拟方向键控制角色移动的方法,实例分析了Android中使用libgdx框架实现响应方向键的技巧,适用于Android游戏开发领域,需要的朋友可以参考下

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

相关文章

  • Android的进度条控件描述

    Android的进度条控件描述

    这篇文章主要介绍了android的几种进度条控件描述的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2017-01-01
  • Android 自定义imageview实现图片缩放实例详解

    Android 自定义imageview实现图片缩放实例详解

    这篇文章主要介绍了Android 自定义imageview实现图片缩放实例详解的相关资料,需要的朋友可以参考下
    2017-04-04
  • Android开发中TextView各种常见使用方法小结

    Android开发中TextView各种常见使用方法小结

    这篇文章主要介绍了Android开发中TextView各种常见使用方法,结合实例形式总结分析了Android开发中TextView各种常见布局与功能实现技巧,需要的朋友可以参考下
    2019-04-04
  • Android热更新开源项目Tinker集成实践总结

    Android热更新开源项目Tinker集成实践总结

    最近项目集成了Tinker,开始认为集成会比较简单,但是在实际操作的过程中还是遇到了一些问题,本文就会介绍在集成过程大家基本会遇到的主要问题。下面跟着小编一起来看下吧
    2017-01-01
  • 详解Android JS相互调用

    详解Android JS相互调用

    这篇文章主要为大家介绍了Android与JS两者之间的相互调用,感兴趣的小伙伴们可以参考一下
    2016-01-01
  • Android实现延迟的几种方法小结

    Android实现延迟的几种方法小结

    这篇文章主要介绍了Android实现延迟的几种方法,结合实例总结了Android实现延迟的几种常见技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2016-02-02
  • WheelPicker自定义时间选择器控件

    WheelPicker自定义时间选择器控件

    这篇文章主要为大家详细介绍了WheelPicker自定义时间选择器控件,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-05-05
  • Android仿微信左右滑动点击切换页面和图标

    Android仿微信左右滑动点击切换页面和图标

    这篇文章主要为大家详细介绍了Android仿微信左右滑动点击切换页面和图标,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-05-05
  • 利用flutter实现炫酷的list

    利用flutter实现炫酷的list

    这篇文章主要给大家介绍了关于利用flutter实现炫酷的list的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用flutter具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-06-06
  • android中webview控件和javascript交互实例

    android中webview控件和javascript交互实例

    这篇文章主要介绍了android中webview控件和javascript交互实例,例子中包括javascript调用java的方法,java代码中调用javascript的方法,需要的朋友可以参考下
    2014-07-07

最新评论