• Advertisement

2D Why is the input of my button moved[LibGDX]?

Recommended Posts

Hello everybody,
I've been a bloody problem for a few days now.
I created a button in LibGDX. This button I have packed on a table and the table I have packed on a stack and the stack again to a stage.
The problem is that I have to push a few pixels next to the button in order to erase.
That means when I press exactly on the button nothing happens.

I will copy here the times the appropriate code slightly shortened.
I could also shorten the code a bit.

public class HUD implements Disposable {
    PlayScreen screen;

    public static Stage stage;
    private Viewport viewport;

    private Stack stack;

    public HUD(PlayScreen screen, SpriteBatch sb) {
        this.screen = screen;

        viewport = new FitViewport(PlayScreen.V_WIDTH, PlayScreen.V_HEIGHT, new OrthographicCamera());
        stage = new Stage(viewport, sb);

        stack = new Stack(); // This is the Stack
        stack.setFillParent(true);
        stack.addActor(buildHudLayer()); // Here I add another Table to the Stack
        stack.addActor(buildButtonLayer()); // Here I add the Table with the Button to the Stack
        stage.addActor(stack); // Here I add the Stack to the Stage
        PlayScreen.multiplexer.addProcessor(stage); // Here I add the input of the Stage to an InputMultiplexer
        screen.setInput();
    }

    private Label fpsLabel;
    private Label levelLabel;

    private Table buildHudLayer() { // This is another table
        Table table = new Table();
        table.top();

        fpsLabel = new Label(Gdx.graphics.getFramesPerSecond() + "fps", new Label.LabelStyle(new BitmapFont(), Color.BLACK));
        levelLabel = new Label(Masterrunner.currentLevel + " - " + Masterrunner.currentLevel, new Label.LabelStyle(new BitmapFont(), Color.BLACK));

        table.add(fpsLabel).expandX();
        table.add(levelLabel).expandX();

        return table;
    }

    private Table buildButtonLayer() {
        Table table = new Table(); // Here I create the table
        table.setFillParent(true);
        table.setDebug(true);
        table.top();

        Button.ButtonStyle style = new Button.ButtonStyle(); // This is the Button
        style.up = new TextureRegionDrawable(PlayScreen.atlas.findRegion("Pause"));
        style.down = new TextureRegionDrawable(PlayScreen.atlas.findRegion("Pause1"));
        Button pauseButton = new Button(style);
        table.add(pauseButton).size(20, 20); // Here I add the Button to the Table

        return table; // Here I return the Table
    }

    public void update() {
        fpsLabel.setText(Gdx.graphics.getFramesPerSecond() + "fps");
        levelLabel.setText(Masterrunner.currentWorld.getName() + " - " + Masterrunner.currentLevel);
        stage.act();
	}

    public void render() {
        stage.draw();
    }
}

I hope the information is sufficient, if not corrected me please.

 

Dear greetings UbuLin ;D

Share this post


Link to post
Share on other sites
Advertisement

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now


  • Advertisement
  • Advertisement
  • Popular Tags

  • Advertisement
  • Popular Now

  • Similar Content

    • By Snaked
      Im working in this project for 1 year .... mostly i develop a tool and databases for make the different maps and now i'm doing the client for play the game
      Tell me if you like it......
      this is a capture of how is viewing atm

       
       
      https://youtu.be/9251v4wDTQ0
    • By EddieK
      Hi i'm trying incorporate sounds into my game and I have ran into troubles with performance. Whenever I call:
      soundPool = new SoundPool.Builder().setAudioAttributes(new AudioAttributes.Builder().build()).build(); I immediately notice lagging and the framerate drops drastically. I don't even have to actually play the sounds for the framerate drop to occur.
      Is there anything I can do to fix this issue?
      Thanks in advance.
       
      P.S. Never mind, I figured out that restarting the phone got rid of the lagg and it wasn't because of the sound.
    • By RoKabium Games
      Another one of our new UI for #screenshotsaturday. This is the inventory screen for showing what animal fossils you have collected so far. #gamedev #indiedev #sama
    • By Dave Haylett
      Hi everyone. I need some help with my project. It's a 2D-graphics-heavy WPF front-end app written in C#, which talks to two Access 2000 databases (yes I know, it's all I've got). It will be distributed freely on the internet, and so will be being used by Windows users of various installations/versions of Windows, Office, etc.
      One of the two databases (let's call it A), is intended to be read-only, and will be distributed with the app. It has half a dozen relational tables which I as the developer have populated, and is connected to in the app via OleDB Jet 4 with SQL querying the data now and then as the user uses the front-end. The database will be replaced whenever I release an update to the app.
      Database B is read/write, and contains end-user preferences, for example when they favourite something in my front-end, a Favourites table in here gets appended to. This database is not distributed with my app, and should not be overwritten, as it will lose user prefs, etc. and annoy my users.
      Whenever my app is run by a user, during initialisation database A will suck in the user data from database B (using simple SQL SELECT * INTO...), so that all the tables can be joined together by the SQL in database A (to include user prefs/favourites in SQL queries), and whenever the user favourites something, a record is created both in A (for the short-term session) and B (permanently). Database B isn't just about holding favourites, there is other user data in here as well, so there are 3 or 4 tables in B.
      So far, this is all working fine and I'm happy...
      Unfortunately my app is currently 32-bit, and it now needs to break the 32-bit memory barrier what with the size and volume of the graphics I'm pulling in (using the HDD is not really an option, as different graphics are needed kind of instantly and the hard disc would be being hosed and the app dog-slow otherwise, I suspect even off an SSD).
      I'm using VS2015, and switching to 64-bit will probably fix the memory problem, but it breaks Jet 4.0. I'm sure this is old news to most of you.
      To try to keep with 32-bit (and Jet4) but get the memory I need I've tried the -largeaddressaware toggle, and I've tried the editbin suggestion, but I just can't get these solutions to work in VS2015 no matter how hard I try. Are these definitely 100% solutions to 2gb memory limit in 32-bit applications? Should they always work? Am I dumb in being unable to get this to work?
      So otherwise I'm resigned to migrating to 64-bit, and having to get around the database issue, not the memory issue.
      My users will be using a variety of Windows versions (probably 7 and 10), and I'm sure various versions of Office, and so my solution for querying my two Access databases needs to be pretty open if possible.
      Googling has suggested I switch from JET4 to ACE12, but this is apparently requiring me to uninstall Office 2000 and install a 64-bit version (which I don't have), so I can't use it, and I suspect any users who also have an old version of Office installed won't be able to use it either?
      Googling has also suggested I use MS SQL Server. This sounds fine if there's such a thing as a "lite" local version which can manage database access, but I still need to somehow get the data from the databases (A.mdb and B.mdb) into the SQL Server each time the users fire up my app.
      The only solution I can think of at the minute, is to export all the tables from database A into CSVs every time I update the data in there, and have the app import them in a lame way, and also convert database B into some crappy text file which gets written to whenever the user changes a preference. I'd much rather use SQL to do all this if possible, as when the user browses around the app, queries involving joining several tables in A are regularly created and executed to adjust the user's experience/return search results/etc.
      So to summarise my misery, is there either an easy reliable way for me to keep with 32-bit/Jet4 and be able to address >2gb. Or is there instead an easy reliable way for me to switch to 64-bit and successfully query two Access databases without requiring all my users to have 64-bit Office installed?
      Thanks for reading and I hope someone can help.
  • Advertisement