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

时间:2021-05-20

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

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章