当前位置: 移动技术网 > IT编程>移动开发>Android > Android使用libgdx实现模拟方向键控制角色移动的方法

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

2019年07月24日  | 移动技术网IT编程  | 我要评论

louihemas,情人岛高级娱乐会所,拉字至上第二季

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

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网