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