本文实例讲述了Android使用libgdx实现模拟方向键控制角色移动的方法。分享给大家供大家参考,具体如下:
1
2
3
4
5
6
7
8
9
10
11
12
|
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 );
}
}
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
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();
}
}
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
|
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程序设计有所帮助。