• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*******************************************************************************
2  * Copyright 2011 See AUTHORS file.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *   http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  ******************************************************************************/
16 
17 package com.badlogic.gdx.tests;
18 
19 import static com.badlogic.gdx.scenes.scene2d.actions.Actions.*;
20 
21 import com.badlogic.gdx.Gdx;
22 import com.badlogic.gdx.graphics.Color;
23 import com.badlogic.gdx.graphics.GL20;
24 import com.badlogic.gdx.graphics.Texture;
25 import com.badlogic.gdx.graphics.g2d.Batch;
26 import com.badlogic.gdx.graphics.g2d.TextureRegion;
27 import com.badlogic.gdx.scenes.scene2d.Actor;
28 import com.badlogic.gdx.scenes.scene2d.InputEvent;
29 import com.badlogic.gdx.scenes.scene2d.InputListener;
30 import com.badlogic.gdx.scenes.scene2d.Stage;
31 import com.badlogic.gdx.scenes.scene2d.actions.FloatAction;
32 import com.badlogic.gdx.scenes.scene2d.ui.CheckBox;
33 import com.badlogic.gdx.scenes.scene2d.ui.HorizontalGroup;
34 import com.badlogic.gdx.scenes.scene2d.ui.ImageTextButton;
35 import com.badlogic.gdx.scenes.scene2d.ui.ImageTextButton.ImageTextButtonStyle;
36 import com.badlogic.gdx.scenes.scene2d.ui.Label;
37 import com.badlogic.gdx.scenes.scene2d.ui.Skin;
38 import com.badlogic.gdx.scenes.scene2d.ui.Table;
39 import com.badlogic.gdx.scenes.scene2d.ui.TextButton;
40 import com.badlogic.gdx.scenes.scene2d.ui.TextButton.TextButtonStyle;
41 import com.badlogic.gdx.scenes.scene2d.ui.VerticalGroup;
42 import com.badlogic.gdx.scenes.scene2d.ui.Window;
43 import com.badlogic.gdx.scenes.scene2d.utils.ActorGestureListener;
44 import com.badlogic.gdx.scenes.scene2d.utils.TiledDrawable;
45 import com.badlogic.gdx.tests.utils.GdxTest;
46 
47 public class Scene2dTest extends GdxTest {
48 	Stage stage;
49 	private FloatAction meow = new FloatAction(10, 5);
50 	private TiledDrawable patch;
51 
create()52 	public void create () {
53 		stage = new Stage();
54 		Gdx.input.setInputProcessor(stage);
55 
56 		final TextureRegion region = new TextureRegion(new Texture("data/badlogic.jpg"));
57 		final Actor actor = new Actor() {
58 			public void draw (Batch batch, float parentAlpha) {
59 				Color color = getColor();
60 				batch.setColor(color.r, color.g, color.b, parentAlpha);
61 				batch.draw(region, getX(), getY(), getOriginX(), getOriginY(), getWidth(), getHeight(), getScaleX(), getScaleY(),
62 					getRotation());
63 			}
64 		};
65 		actor.setBounds(15, 15, 100, 100);
66 		actor.setOrigin(50, 50);
67 		stage.addActor(actor);
68 		actor.addListener(new InputListener() {
69 			public boolean touchDown (InputEvent event, float x, float y, int pointer, int button) {
70 				System.out.println("down");
71 				return true;
72 			}
73 
74 			public void touchUp (InputEvent event, float x, float y, int pointer, int button) {
75 				System.out.println("up " + event.getTarget());
76 			}
77 		});
78 
79 		Skin skin = new Skin(Gdx.files.internal("data/uiskin.json"));
80 
81 		VerticalGroup g = new VerticalGroup().space(5).reverse().pad(5).fill();
82 		for (int i = 0; i < 10; i++)
83 			g.addActor(new TextButton("button " + i, skin));
84 		g.addActor(new TextButton("longer button", skin));
85 		Table table = new Table().debug();
86 		table.add(g);
87 		table.pack();
88 		table.setPosition(5, 100);
89 		stage.addActor(table);
90 
91 		HorizontalGroup h = new HorizontalGroup().space(5).reverse().pad(5).fill();
92 		for (int i = 0; i < 5; i++)
93 			h.addActor(new TextButton("button " + i, skin));
94 		h.addActor(new TextButton("some taller\nbutton", skin));
95 		table = new Table().debug();
96 		table.add(h);
97 		table.pack();
98 		table.setPosition(130, 100);
99 		stage.addActor(table);
100 		table.toFront();
101 
102 		final TextButton button = new TextButton("Fancy Background", skin);
103 
104 // button.addListener(new ClickListener() {
105 // public void clicked (InputEvent event, float x, float y) {
106 // System.out.println("click! " + x + " " + y);
107 // }
108 // });
109 
110 		button.addListener(new ActorGestureListener() {
111 			public boolean longPress (Actor actor, float x, float y) {
112 				System.out.println("long press " + x + ", " + y);
113 				return true;
114 			}
115 
116 			public void fling (InputEvent event, float velocityX, float velocityY, int button) {
117 				System.out.println("fling " + velocityX + ", " + velocityY);
118 			}
119 
120 			public void zoom (InputEvent event, float initialDistance, float distance) {
121 				System.out.println("zoom " + initialDistance + ", " + distance);
122 			}
123 
124 			public void pan (InputEvent event, float x, float y, float deltaX, float deltaY) {
125 				event.getListenerActor().moveBy(deltaX, deltaY);
126 				if (deltaX < 0) System.out.println("panning " + deltaX + ", " + deltaY + " " + event.getTarget());
127 			}
128 		});
129 
130 // button.addListener(new ChangeListener() {
131 // public void changed (ChangeEvent event, Actor actor) {
132 // // event.cancel();
133 // }
134 // });
135 
136 		button.setPosition(50, 50);
137 		stage.addActor(button);
138 
139 // List select = new List(skin);
140 // select.setBounds(200, 200, 100, 100);
141 // select.setItems(new Object[] {1, 2, 3, 4, 5});
142 // stage.addActor(select);
143 
144 // stage.addListener(new ChangeListener() {
145 // public void changed (ChangeEvent event, Actor actor) {
146 // System.out.println(actor);
147 // }
148 // });
149 
150 		meow.setDuration(2);
151 
152 		actor.addAction(forever(sequence(moveBy(50, 0, 2), moveBy(-50, 0, 2), run(new Runnable() {
153 			public void run () {
154 				actor.setZIndex(0);
155 			}
156 		}))));
157 		// actor.addAction(parallel(rotateBy(90, 2), rotateBy(90, 2)));
158 		// actor.addAction(parallel(moveTo(250, 250, 2, elasticOut), color(RED, 6), delay(0.5f), rotateTo(180, 5, swing)));
159 		// actor.addAction(forever(sequence(scaleTo(2, 2, 0.5f), scaleTo(1, 1, 0.5f), delay(0.5f))));
160 
161 		patch = new TiledDrawable(skin.getRegion("default-round"));
162 
163 		Window window = new Window("Moo", skin);
164 		Label lbl = new Label("ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJ", skin);
165 		lbl.setWrap(true);
166 		window.row();
167 		window.add(lbl).width(400);
168 		window.pack();
169 		window.pack();
170 		stage.addActor(window);
171 
172 		ImageTextButtonStyle style = new ImageTextButtonStyle(skin.get("default", TextButtonStyle.class));
173 		style.imageUp = skin.getDrawable("default-round");
174 		ImageTextButton buttonLeft = new ImageTextButton("HI IM LEFT", style);
175 		ImageTextButton buttonRight = new ImageTextButton("HI IM RIGHT", style) {
176 			{
177 				clearChildren();
178 				add(getLabel());
179 				add(getImage());
180 			}
181 		};
182 		CheckBox checkBoxLeft = new CheckBox("HI IM LEFT", skin, "default");
183 		CheckBox checkBoxRight = new CheckBox("HI IM RIGHT", skin, "default") {
184 			{
185 				clearChildren();
186 				add(getLabel());
187 				add(getImage());
188 			}
189 		};
190 
191 		buttonLeft.setPosition(300, 400);
192 		buttonRight.setPosition(300, 370);
193 		checkBoxLeft.setPosition(150, 400);
194 		checkBoxRight.setPosition(150, 370);
195 
196 		stage.addActor(buttonLeft);
197 		stage.addActor(buttonRight);
198 		stage.addActor(checkBoxLeft);
199 		stage.addActor(checkBoxRight);
200 
201 		buttonLeft.debug();
202 		buttonRight.debug();
203 		checkBoxLeft.debug();
204 		checkBoxRight.debug();
205 	}
206 
render()207 	public void render () {
208 		// System.out.println(meow.getValue());
209 		Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
210 		stage.act(Gdx.graphics.getDeltaTime());
211 		stage.draw();
212 
213 		stage.getBatch().begin();
214 		patch.draw(stage.getBatch(), 300, 100, 126, 126);
215 		stage.getBatch().end();
216 	}
217 
resize(int width, int height)218 	public void resize (int width, int height) {
219 		stage.getViewport().update(width, height, true);
220 	}
221 
dispose()222 	public void dispose () {
223 		stage.dispose();
224 	}
225 }
226