List of usage examples for com.badlogic.gdx.scenes.scene2d.ui Slider Slider
public Slider(float min, float max, float stepSize, boolean vertical, SliderStyle style)
From source file:Options.java
License:Apache License
public Options() { Sink.setBackground("title"); Sink.transitionDownToUp();//from w w w. j a va2s . c om grid = new Table(); grid.setSize(Sink.targetWidth, Sink.targetHeight); grid.setFillParent(true); grid.setPosition(0, 0); grid.top().left(); grid.center(); float yoffset = Sink.targetHeight - 80; float xcenter = Sink.targetWidth / 2; /* ________________________ * |_______Options__________| * | | | * | | | * | | | * |__________|_____________| * |_________Back___________| */ TextButton title = new TextButton("Options", Asset.skin); title.setSize(200, 75); TextButton back = new TextButton("Back", Asset.skin); back.setSize(200, 75); back.addListener(new ClickListener() { @Override public void clicked(InputEvent event, float x, float y) { super.clicked(event, x, y); Sink.setScene("Menu"); } }); CheckBox soundbtn = new CheckBox(" Sound ", Asset.skin); soundbtn.setChecked(Config.isSound); CheckBox musicbtn = new CheckBox(" Music ", Asset.skin); musicbtn.setChecked(Config.isMusic); CheckBox battbtn = new CheckBox(" Battle ", Asset.skin); battbtn.setChecked(Config.isBattleEnabled()); CheckBox semibtn = new CheckBox(" Semi-Auto ", Asset.skin); semibtn.setChecked(Config.isSemiAutomatic()); CheckBox panbtn = new CheckBox(" PanScroll ", Asset.skin); panbtn.setChecked(Config.usePan); CheckBox dragbtn = new CheckBox(" DragScroll ", Asset.skin); dragbtn.setChecked(Config.useDrag); CheckBox keybtn = new CheckBox(" UseKeyboard ", Asset.skin); keybtn.setChecked(Config.useKeyboard); Slider musicSlider = new Slider(0f, 1f, 0.1f, false, Asset.skin); Slider soundSlider = new Slider(0f, 1f, 0.1f, false, Asset.skin); Sink.addActor(title, xcenter - title.getWidth() + 30, yoffset); Sink.addActor(musicbtn, xcenter - musicbtn.getWidth(), yoffset - 60); Sink.addActor(musicSlider, xcenter + 30, yoffset - 60); Sink.addActor(soundbtn, xcenter - soundbtn.getWidth(), yoffset - 90); Sink.addActor(soundSlider, xcenter + 30, yoffset - 90); Sink.addActor(battbtn, xcenter - battbtn.getWidth(), yoffset - 120); Sink.addActor(panbtn, xcenter + 30, yoffset - 120); Sink.addActor(semibtn, xcenter - semibtn.getWidth(), yoffset - 150); Sink.addActor(dragbtn, xcenter + 30, yoffset - 150); Sink.addActor(dragbtn, xcenter + 30, yoffset - 180); Sink.addActor(back, xcenter - back.getWidth() + 30, 20); }
From source file:awakening.view.menu.Audio.java
License:Apache License
/** * Constructor//from w w w .j a v a 2 s.c o m * * @param game Tower Awakening's Game * @param sound Main menu's music * @param effect Button's effect */ public Audio(TAGame game, Music sound, Sound effect) { this.game = game; this.sound = sound; this.effect = effect; stage = new Stage(); try { if (game.getLanguage().equals("ENGLISH")) { language = ResourceBundle.getBundle("awakening.view.menu.res_en_EN", locales[0]); } else if (game.getLanguage().equals("FRENCH")) { language = ResourceBundle.getBundle("awakening.view.menu.res_fr_FR", locales[1]); } else if (game.getLanguage().equals("ITALIAN")) { language = ResourceBundle.getBundle("awakening.view.menu.res_it_IT", locales[2]); } else { language = ResourceBundle.getBundle("awakening.view.menu.res", locales[0]); } } catch (java.util.MissingResourceException e) { System.out.println("yolo"); } ///Viewport camera = new OrthographicCamera(); view = new StretchViewport(Gdx.app.getGraphics().getWidth(), Gdx.app.getGraphics().getWidth(), camera); ///Background background = new Texture(Gdx.files.internal("img/menu/Background-2.png")); batch = new SpriteBatch(); ///Skin skin = new Skin(Gdx.files.internal("uiskin.json")); ///Title title = new Label(language.getString("button_audio"), skin); ///Widgets Background widgetsBackground = new Image(new Texture(Gdx.files.internal("img/widget/bg widgets.png"))); ///Back Button btnBack = new TextButton(language.getString("button_back"), skin); ///Music Slider sliderMusic = new Slider(0, 10, 1, false, skin); ///Music Label musicLabel = new Label(language.getString("label_music_volume"), skin); ///Sound Slider sliderEffects = new Slider(0, 10, 1, false, skin); ///Sound Label soundLabel = new Label(language.getString("label_effect_volume"), skin); }
From source file:ca.hiphiparray.amazingmaze.SettingsScreen.java
License:Open Source License
/** * Create a new SettingsScreen.//from ww w . j ava2s . co m * * @param game Instance of AmazingMazeGame to be used */ public SettingsScreen(final AmazingMazeGame game) { this.game = game; this.sourceScreen = game.menuScreen; settings = new Stage(new ScreenViewport(), this.game.batch); multiplexer = new InputMultiplexer(); multiplexer.addProcessor(settings); multiplexer.addProcessor(this); table = new Table(); table.top(); table.setFillParent(true); controlsTable = new Table(); settings.addActor(table); Skin skin = game.assets.skin; screenHeader = new Label("Settings", game.assets.skin, Assets.SANS_HEADER_STYLE); musicSlider = new Slider(0, 1, 0.1f, false, game.assets.skin); musicSlider.setValue(game.save.getMusicLevel()); musicSlider.setAnimateDuration(0.25f); musicSlider.addListener(new ChangeListener() { @Override public void changed(ChangeEvent event, Actor actor) { game.music.setVolume(musicSlider.getValue()); game.save.setMusicLevel(game.music.getVolume()); } }); musicSliderLabel = new Label("Music Volume", game.assets.skin); controlsHeader = new Label("Controls", game.assets.skin); actions = new Label[] { new Label("Up", game.assets.skin), new Label("Down", game.assets.skin), new Label("Left", game.assets.skin), new Label("Right", game.assets.skin), new Label("Pause", game.assets.skin) }; actionControls = new TextButton[] { new TextButton(Keys.toString(game.save.getUpButton()), skin), new TextButton(Keys.toString(game.save.getDownButton()), skin), new TextButton(Keys.toString(game.save.getLeftButton()), skin), new TextButton(Keys.toString(game.save.getRightButton()), skin), new TextButton(Keys.toString(game.save.getPauseButton()), skin) }; actionControls[0].addListener(new ChangeListener() { @Override public void changed(ChangeEvent event, Actor actor) { if (actionControls[0].isPressed()) { updateControls(0); } } }); actionControls[1].addListener(new ChangeListener() { @Override public void changed(ChangeEvent event, Actor actor) { if (actionControls[1].isPressed()) { updateControls(1); } } }); actionControls[2].addListener(new ChangeListener() { @Override public void changed(ChangeEvent event, Actor actor) { if (actionControls[2].isPressed()) { updateControls(2); } } }); actionControls[3].addListener(new ChangeListener() { @Override public void changed(ChangeEvent event, Actor actor) { if (actionControls[3].isPressed()) { updateControls(3); } } }); actionControls[4].addListener(new ChangeListener() { @Override public void changed(ChangeEvent event, Actor actor) { if (actionControls[4].isPressed()) { updateControls(4); } } }); // Reset settings button resetSettingsButton = new TextButton("Reset Settings", skin); resetSettingsButton.addListener(new ChangeListener() { @Override public void changed(ChangeEvent event, Actor actor) { if (resetSettingsButton.isPressed()) { game.save.resetSettings(); musicSlider.setValue(game.save.getMusicLevel()); resetActionControlsLabels(); } } }); // Reset save button. resetSaveButton = new TextButton("Reset Save", skin); resetSaveButton.addListener(new ChangeListener() { @Override public void changed(ChangeEvent event, Actor actor) { if (resetSaveButton.isPressed()) { game.save.resetSave(); } } }); backButton = new TextButton("Back", skin); }
From source file:com.badlogic.gdx.ai.tests.BehaviorTreeViewer.java
License:Apache License
@Override public void create() { step = 0;//from w w w. j ava 2s . c o m taskNodes = new ObjectMap<Task<Dog>, TaskNode>(); BehaviorTreeParser<Dog> parser = new BehaviorTreeParser<Dog>(BehaviorTreeParser.DEBUG_NONE); BehaviorTree<Dog> tree = parser.parse(Gdx.files.internal("data/dog.tree"), null); dog = new Dog("Dog 1", tree); tree.addListener(new BehaviorTree.Listener<Dog>() { @Override public void statusUpdated(Task<Dog> task, Task.Status previousStatus) { TaskNode tn = taskNodes.get(task); tn.updateStatus(previousStatus, step); } @Override public void childAdded(Task<Dog> task, int index) { TaskNode parentNode = taskNodes.get(task); Task<Dog> child = task.getChild(index); addToTree(displayTree, parentNode, child, null, 0); displayTree.expandAll(); } }); KryoUtils.initKryo(); skin = new Skin(Gdx.files.internal("data/uiskin.json")); treeStatus = SUSPENDED; runDelaySlider = new Slider(0, 5, 0.01f, false, skin); runDelaySlider.setValue(.5f); runButton = new TextButton("Run", skin); stepButton = new TextButton("Step", skin); loadButton = new TextButton("Load", skin); loadButton.setDisabled(true); saveButton = new TextButton("Save", skin); stepLabel = new Label(new StringBuilder(LABEL_STEP + step), skin); stage = new Stage(new ScreenViewport()); Table table = new Table(); table.row().height(20).fillX(); table.add(runDelaySlider); table.add(runButton); table.add(stepButton); table.add(saveButton); table.add(loadButton); table.add(stepLabel); table.row(); displayTree = new Tree(skin); redrawTree(); table.add(displayTree).colspan(3).fillX().fillY().expand(true, true); stage.addActor(table); table.setFillParent(true); saveButton.addListener(new ChangeListener() { @Override public void changed(ChangeEvent event, Actor actor) { save(); saved = true; loadButton.setDisabled(false); } }); loadButton.addListener(new ChangeListener() { @Override public void changed(ChangeEvent event, Actor actor) { load(); } }); stepButton.addListener(new ChangeListener() { @Override public void changed(ChangeEvent event, Actor actor) { treeStatus = STEP; // step(); } }); runButton.addListener(new ChangeListener() { @Override public void changed(ChangeEvent event, Actor actor) { if (treeStatus == SUSPENDED) { treeStatus = RUNNING; delay = runDelaySlider.getValue(); // this makes it start immediately runButton.setText("Suspend"); stepButton.setDisabled(true); saveButton.setDisabled(true); loadButton.setDisabled(true); } else { treeStatus = SUSPENDED; runButton.setText("Run"); stepButton.setDisabled(false); saveButton.setDisabled(false); loadButton.setDisabled(!saved); } } }); Gdx.input.setInputProcessor(stage); setScreen(this); }
From source file:com.badlogic.gdx.ai.tests.btree.BehaviorTreeViewer.java
License:Apache License
public BehaviorTreeViewer(BehaviorTree<E> tree, boolean loadAndSave, Skin skin) { super(skin);/*w w w . j a v a 2s . co m*/ this.tree = tree; step = 0; taskNodes = new ObjectMap<Task<E>, TaskNode>(); tree.addListener(new BehaviorTree.Listener<E>() { @Override public void statusUpdated(Task<E> task, Task.Status previousStatus) { TaskNode tn = taskNodes.get(task); if (tn != null) tn.updateStatus(previousStatus, step); } @Override public void childAdded(Task<E> task, int index) { TaskNode parentNode = taskNodes.get(task); Task<E> child = task.getChild(index); addToTree(displayTree, parentNode, child, null, 0); displayTree.expandAll(); } }); treeStatus = BT_SUSPENDED; runDelaySlider = new Slider(0, 5, 0.01f, false, skin); runDelaySlider.setValue(.5f); runButton = new TextButton("Run", skin); runButton.addListener(new ChangeListener() { @Override public void changed(ChangeEvent event, Actor actor) { if (treeStatus == BT_SUSPENDED) { treeStatus = BT_RUNNING; runDelayAccumulator = runDelaySlider.getValue(); // this makes it start immediately runButton.setText("Suspend"); stepButton.setDisabled(true); if (saveButton != null) saveButton.setDisabled(true); if (loadButton != null) loadButton.setDisabled(true); } else { treeStatus = BT_SUSPENDED; runButton.setText("Run"); stepButton.setDisabled(false); if (saveButton != null) saveButton.setDisabled(false); if (loadButton != null) loadButton.setDisabled(!saved); } } }); stepButton = new TextButton("Step", skin); stepButton.addListener(new ChangeListener() { @Override public void changed(ChangeEvent event, Actor actor) { treeStatus = BT_STEP; } }); resetButton = new TextButton("Reset", skin); resetButton.addListener(new ChangeListener() { @Override public void changed(ChangeEvent event, Actor actor) { BehaviorTreeViewer.this.tree.reset(); rebuildDisplayTree(); } }); if (loadAndSave) { loadButton = new TextButton("Load", skin); loadButton.setDisabled(true); loadButton.addListener(new ChangeListener() { @Override public void changed(ChangeEvent event, Actor actor) { load(); } }); saveButton = new TextButton("Save", skin); saveButton.addListener(new ChangeListener() { @Override public void changed(ChangeEvent event, Actor actor) { save(); saved = true; loadButton.setDisabled(false); } }); } stepLabel = new Label(new StringBuilder(LABEL_STEP + step), skin); this.row().height(26).fillX(); this.add(runDelaySlider); this.add(runButton); this.add(stepButton); this.add(resetButton); if (loadAndSave) { this.add(saveButton); this.add(loadButton); } this.add(stepLabel); this.row(); displayTree = new Tree(skin); rebuildDisplayTree(); this.add(displayTree).colspan(5 + (loadAndSave ? 2 : 0)).grow(); }
From source file:com.badlogic.gdx.ai.tests.steer.SteeringTestBase.java
License:Apache License
protected void addMaxLinearAccelerationController(Table table, final Limiter limiter, float minValue, float maxValue, float step) { final Label labelMaxLinAcc = new Label("Max.Linear Acc.[" + limiter.getMaxLinearAcceleration() + "]", container.skin);/*ww w . j a v a 2s . c o m*/ table.add(labelMaxLinAcc); table.row(); Slider maxLinAcc = new Slider(minValue, maxValue, step, false, container.skin); maxLinAcc.setValue(limiter.getMaxLinearAcceleration()); maxLinAcc.addListener(new ChangeListener() { @Override public void changed(ChangeEvent event, Actor actor) { Slider slider = (Slider) actor; limiter.setMaxLinearAcceleration(slider.getValue()); labelMaxLinAcc.setText("Max.Linear Acc.[" + limiter.getMaxLinearAcceleration() + "]"); } }); table.add(maxLinAcc); }
From source file:com.badlogic.gdx.ai.tests.steer.SteeringTestBase.java
License:Apache License
protected void addMaxLinearSpeedController(Table table, final Limiter limiter, float minValue, float maxValue, float step) { final Label labelMaxSpeed = new Label("Max.Lin.Speed [" + limiter.getMaxLinearSpeed() + "]", container.skin);/*from ww w. j av a 2s. co m*/ table.add(labelMaxSpeed); table.row(); Slider maxSpeed = new Slider(minValue, maxValue, step, false, container.skin); maxSpeed.setValue(limiter.getMaxLinearSpeed()); maxSpeed.addListener(new ChangeListener() { @Override public void changed(ChangeEvent event, Actor actor) { Slider slider = (Slider) actor; limiter.setMaxLinearSpeed(slider.getValue()); labelMaxSpeed.setText("Max.Lin.Speed [" + limiter.getMaxLinearSpeed() + "]"); } }); table.add(maxSpeed); }
From source file:com.badlogic.gdx.ai.tests.steer.SteeringTestBase.java
License:Apache License
protected void addMaxAngularAccelerationController(Table table, final Limiter limiter, float minValue, float maxValue, float step) { final Label labelMaxAngAcc = new Label("Max.Ang.Acc.[" + limiter.getMaxAngularAcceleration() + "]", container.skin);//from ww w . j ava2 s .c om table.add(labelMaxAngAcc); table.row(); Slider maxAngAcc = new Slider(minValue, maxValue, step, false, container.skin); maxAngAcc.setValue(limiter.getMaxAngularAcceleration()); maxAngAcc.addListener(new ChangeListener() { @Override public void changed(ChangeEvent event, Actor actor) { Slider slider = (Slider) actor; limiter.setMaxAngularAcceleration(slider.getValue()); labelMaxAngAcc.setText("Max.Ang.Acc.[" + limiter.getMaxAngularAcceleration() + "]"); } }); table.add(maxAngAcc); }
From source file:com.badlogic.gdx.ai.tests.steer.SteeringTestBase.java
License:Apache License
protected void addMaxAngularSpeedController(Table table, final Limiter limiter, float minValue, float maxValue, float step) { final Label labelMaxAngSpeed = new Label("Max.Ang.Speed [" + limiter.getMaxAngularSpeed() + "]", container.skin);/*from w w w . j a v a 2 s .c om*/ table.add(labelMaxAngSpeed); table.row(); Slider maxAngSpeed = new Slider(minValue, maxValue, step, false, container.skin); maxAngSpeed.setValue(limiter.getMaxAngularSpeed()); maxAngSpeed.addListener(new ChangeListener() { @Override public void changed(ChangeEvent event, Actor actor) { Slider slider = (Slider) actor; limiter.setMaxAngularSpeed(slider.getValue()); labelMaxAngSpeed.setText("Max.Ang.Speed [" + limiter.getMaxAngularSpeed() + "]"); } }); table.add(maxAngSpeed); }
From source file:com.badlogic.gdx.spriter.demo.SpriterDemoApp.java
@Override public void create() { // Initialize object batch = new SpriteBatch(); camera = new OrthographicCamera(); FileHandleResolver resolver = new InternalFileHandleResolver(); assetManager = new AssetManager(resolver); assetManager.setLoader(SpriterData.class, new SpriterDataLoader(resolver)); resolver = new AbsoluteFileHandleResolver(); externalAssetManager = new AssetManager(resolver); externalAssetManager.setLoader(SpriterData.class, new SpriterDataLoader(resolver)); assetManager.load("uiskin.json", Skin.class); assetManager.finishLoading();/* www.j a v a 2s . c o m*/ skin = assetManager.get("uiskin.json"); // Create widgets stage = new Stage(new ScreenViewport(camera), batch); Label titleLabel = new Label("gdx-spriter", skin); titleLabel.setFontScale(3f); Label fpsLabel = new Label("FPS", skin) { @Override public void act(float delta) { this.setText(Gdx.graphics.getFramesPerSecond() + " FPS"); super.act(delta); } }; fileChooser = new SelectBox<SpriterDemoFileHandle>(skin); fileChooser.setName("Files"); fileChooser.addListener(new ChangeListener() { @Override public void changed(ChangeEvent event, Actor actor) { changeSpriterFile(fileChooser.getSelected()); lastUsedSelectBox = fileChooser; } }); Button fileFinder = new TextButton("Browse", skin); fileFinder.addListener(new ChangeListener() { @Override public void changed(ChangeEvent event, Actor actor) { FileDialog fileDialog = new FileDialog((java.awt.Frame) null, "Choose Spriter file", FileDialog.LOAD); fileDialog.setDirectory(lastFolderBrowsed); fileDialog.setResizable(true); fileDialog.setVisible(true); String file = fileDialog.getFile(); String directory = fileDialog.getDirectory(); if (directory != null) { lastFolderBrowsed = directory; } if (file != null) { String path = directory + file; addFile(Gdx.files.absolute(path), externalAssetManager); fileChooser.setItems(files); fileChooser.setSelectedIndex(fileChooser.getItems().size - 1); } } }); entityChooser = new SelectBox<SpriterAnimator>(skin); entityChooser.setName("Entities"); entityChooser.addListener(new ChangeListener() { @Override public void changed(ChangeEvent event, Actor actor) { changeAnimator(entityChooser.getSelected()); lastUsedSelectBox = entityChooser; } }); animationChooser = new SelectBox<String>(skin); animationChooser.setName("Animations"); animationChooser.addListener(new ChangeListener() { @Override public void changed(ChangeEvent event, Actor actor) { changeAnimation(animationChooser.getSelected()); lastUsedSelectBox = animationChooser; } }); final CheckBox transitionCheckbox = new CheckBox("Transition", skin); transitionCheckbox.setChecked(transition); transitionCheckbox.addListener(new ChangeListener() { @Override public void changed(ChangeEvent event, Actor actor) { transition = transitionCheckbox.isChecked(); } }); charmapChooser = new List<SpriterCharacterMap>(skin); ArraySelection<SpriterCharacterMap> selection = charmapChooser.getSelection(); selection.setMultiple(true); selection.setRangeSelect(false); selection.setToggle(false); selection.setRequired(false); charmapChooser.setName("Charmaps"); charmapChooser.addListener(new ChangeListener() { @Override public void changed(ChangeEvent event, Actor actor) { changeCharacterMaps(charmapChooser.getSelection().items().orderedItems()); } }); angleSlider = new SpriterDemoAnimatorSlider(0, 360, 1f, skin, "%.0f") { @Override public void setValue(SpriterAnimator animator, float value) { spriterAnimator.setRotation(value); } @Override protected float getValue(SpriterAnimator animator) { return spriterAnimator.getRotation(); } }; pivotXSlider = new SpriterDemoAnimatorSlider(-1000f, 1000f, 1f, skin, "%.0f") { @Override public void setValue(SpriterAnimator animator, float value) { animator.setPivotX(value); } @Override protected float getValue(SpriterAnimator animator) { return animator.getPivotX(); } }; pivotYSlider = new SpriterDemoAnimatorSlider(-1000f, 1000f, 1f, skin, "%.0f") { @Override public void setValue(SpriterAnimator animator, float value) { animator.setPivotY(value); } @Override protected float getValue(SpriterAnimator animator) { return animator.getPivotY(); } }; scaleXSlider = new SpriterDemoAnimatorSlider(-10f, 10f, 0.1f, skin) { @Override public void setValue(SpriterAnimator animator, float value) { spriterAnimator.setScaleX(value); } @Override protected float getValue(SpriterAnimator animator) { return spriterAnimator.getScaleX(); } }; scaleYSlider = new SpriterDemoAnimatorSlider(-10f, 10f, 0.1f, skin) { @Override public void setValue(SpriterAnimator animator, float value) { spriterAnimator.setScaleY(value); } @Override protected float getValue(SpriterAnimator animator) { return spriterAnimator.getScaleY(); } }; alphaSlider = new SpriterDemoAnimatorSlider(0f, 1f, 0.01f, skin, "%.2f") { @Override public void setValue(SpriterAnimator animator, float value) { animator.setAlpha(value); } @Override protected float getValue(SpriterAnimator animator) { return animator.getAlpha(); } }; speedSlider = new SpriterDemoAnimatorSlider(0f, 10f, 0.1f, skin) { @Override public void setValue(SpriterAnimator animator, float value) { animator.setSpeed(value); } @Override protected float getValue(SpriterAnimator animator) { return animator.getSpeed(); } }; allAnimatorSliders = new SpriterDemoAnimatorSlider[] { scaleXSlider, scaleYSlider, pivotXSlider, pivotYSlider, angleSlider, alphaSlider, speedSlider }; metaLabel = new Label("Meta: ", skin); metaLabel.setWrap(true); metaLabel.setAlignment(Align.topLeft); spriterPlaceholder = new Label("No animator", skin); spriterPlaceholder.setAlignment(Align.center); spriterAnimator = new SpriterAnimatorActor(animator); spriterAnimator.debug(); playPauseButton = new ImageButton(skin, "play"); playPauseButton.setChecked(true); playPauseButton.addListener(new ChangeListener() { @Override public void changed(ChangeEvent event, Actor actor) { boolean playing = playPauseButton.isChecked(); spriterAnimator.setDisabled(!playing); } }); timeSlider = new Slider(0f, 2000f, 1, false, skin); timeSlider.addListener(timeSliderListener = new ChangeListener() { @Override public void changed(ChangeEvent event, Actor actor) { if (animator == null) return; animator.setTime(timeSlider.getValue()); animator.update(0f); } }); timeLabel = new Label("---", skin); // Put everything in place Table titleTable = new Table(skin); titleTable.add(titleLabel).pad(6f); titleTable.add().expandX(); titleTable.add(fpsLabel).padRight(10f); Table selectionTable = new Table(skin); selectionTable.defaults().pad(3f); Table filesTable = new Table(skin); filesTable.row(); filesTable.add(fileChooser).expand().fillX(); filesTable.add(fileFinder).padLeft(2f).padRight(1f); Table animationsTable = new Table(skin); animationsTable.row(); animationsTable.add(animationChooser).expand().fill(); animationsTable.add(transitionCheckbox).fillX().padLeft(2f); ScrollPane scrollableCharmapChooser = new ScrollPane(charmapChooser); Table menuTable = new Table(skin); menuTable.defaults().pad(3f).expandX().fillX(); menuTable.row(); menuTable.add(titleTable).colspan(2); menuTable.row(); menuTable.add("File"); menuTable.add(filesTable).pad(4f); menuTable.row(); menuTable.add("Entity"); menuTable.add(entityChooser).pad(4f); menuTable.row(); menuTable.add("Animation"); menuTable.add(animationsTable).pad(4f); menuTable.row(); menuTable.add("Maps"); menuTable.add(scrollableCharmapChooser).pad(4f); menuTable.row(); menuTable.add("Angle"); menuTable.add(angleSlider); menuTable.row(); menuTable.add("Pivot X"); menuTable.add(pivotXSlider); menuTable.row(); menuTable.add("Pivot Y"); menuTable.add(pivotYSlider); menuTable.row(); menuTable.add("Scale X"); menuTable.add(scaleXSlider); menuTable.row(); menuTable.add("Scale Y"); menuTable.add(scaleYSlider); menuTable.row(); menuTable.add("Alpha"); menuTable.add(alphaSlider); menuTable.row(); menuTable.add("Speed"); menuTable.add(speedSlider); menuTable.row(); menuTable.add().expandY(); Table contentTable = new Table(skin); contentTable.row(); contentTable.add(metaLabel).left().expandX().maxHeight(1f); contentTable.row(); contentTable.stack(spriterPlaceholder, spriterAnimator).expand(); Table timelineTable = new Table(skin); timelineTable.row(); timelineTable.add("Timeline").expandX().align(Align.bottom); timelineTable.row(); timelineTable.add(timeSlider).expandX().fillX(); timelineTable.row(); timelineTable.add(timeLabel).expandX().align(Align.top); Table controlTable = new Table(skin); controlTable.add(playPauseButton).space(5f).expandY().fillY(); controlTable.add(timelineTable).expandX().fillX(); rootTable = new Table(skin); rootTable.setFillParent(true); rootTable.row(); rootTable.add(menuTable).expandY().fill(); rootTable.add(contentTable).expand().fill(); rootTable.row(); rootTable.add(controlTable).colspan(2).expandX().fillX(); stage.addActor(rootTable); // Bring input processing to the party InputProcessor globalInput = new InputProcessor() { @Override public boolean keyDown(int keycode) { switch (keycode) { case Keys.UP: case Keys.Z: case Keys.W: if (lastUsedSelectBox != null) lastUsedSelectBox.setSelectedIndex(Math.max(lastUsedSelectBox.getSelectedIndex() - 1, 0)); break; case Keys.DOWN: case Keys.S: if (lastUsedSelectBox != null) lastUsedSelectBox.setSelectedIndex(Math.min(lastUsedSelectBox.getSelectedIndex() + 1, lastUsedSelectBox.getItems().size - 1)); break; default: break; } return true; } @Override public boolean keyUp(int keycode) { return false; } @Override public boolean keyTyped(char character) { return false; } @Override public boolean touchDown(int screenX, int screenY, int pointer, int button) { return false; } @Override public boolean touchUp(int screenX, int screenY, int pointer, int button) { return false; } @Override public boolean touchDragged(int screenX, int screenY, int pointer) { return false; } @Override public boolean mouseMoved(int screenX, int screenY) { return false; } @Override public boolean scrolled(int amount) { amount *= 0.05f; // Zoom coefficient scaleXSlider.setValue(scaleXSlider.getValue() + amount); scaleYSlider.setValue(scaleYSlider.getValue() + amount); return false; } }; Gdx.input.setInputProcessor(new InputMultiplexer(stage, globalInput)); // Add default test resources Array<String> testResources = new Array<String>(SpriterTestData.scml); testResources.addAll(SpriterTestData.scon); testResources.sort(); for (String path : testResources) addFile(Gdx.files.internal(path.replaceFirst("/", "")), assetManager); // Also go discover some unknown exotic resources! (won't work in jar though) Array<FileHandle> spriterFiles = SpriterDemoUtils.findFiles(new String[] { "scml", "scon" }); for (FileHandle f : spriterFiles) addFile(f, assetManager); fileChooser.setItems(files); lastUsedSelectBox = fileChooser; if (playPauseButton.isChecked()) animator.play(animator.getAnimations().iterator().next()); }