Nupu loomine

Nupud on UI jaoks vajalikud elemendid.

Lihtsustatult öeldes toimib nupp libGDX-is näitlejana (Actor).

Näitleja renderdamine hõlmab selle paigutamist lava (Stage) koos teiste ekraani elementidega, mis seejärel haldab renderdamis- ja värskendus protsesse.

Siin on, kuidas luua erinevaid nuppe libGDX-is, sealhulgas TextButton, ImageButton ja ImageTextButton.

Kuidas alustada nupu loomisega?

Seadistage lava (Stage) UI elementide haldamiseks ja sisend-protsessi konfigureerimiseks.

public class MyGame extends ApplicationAdapter{

    private Stage stage;



    @Override

    public void create() {

        stage = new Stage(new ScreenViewport());

        Gdx.input.setInputProcessor(stage);

    }



    @Override

    public void render() {

        // Clear the screen

        Gdx.gl.glClearColor(0.2f, 0.2f, 0.2f, 1);

        Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);



        // Update and render the stage

        stage.act(Gdx.graphics.getDeltaTime());

        stage.draw();

    }

}

TextButton

TextButton on lihtne nupp, millel on tekst.

TextButtonStyle textButtonStyle = new TextButtonStyle();

textButtonStyle.font = font;

textButtonStyle.up = skin.getDrawable("button-up");

textButtonStyle.down = skin.getDrawable("button-down");



TextButton textButton = new TextButton("Click me", textButtonStyle);

textButton.setPosition(100, 100);



textButton.addListener(new ChangeListener() {

    @Override

    public void changed(ChangeEvent event, Actor actor) {

        // Action to perform when button is clicked

    }

});



stage.addActor(textButton);

Seletus koodi kohta:

TextButtonStyle textButtonStyle = new TextButtonStyle();

  • Loob TextButtonStyle'i eksemplari (Instance). See klass määrab TextButtoni välimuse, sealhulgas selle fondi ja taustapildid erinevate olekute jaoks (nt normal, pressed, disabled).

textButtonStyle.font = font;

  • Määrab nupu stiilile fondi (mis on juba loodud ja salvestatud muutujasse font).

textButtonStyle.up = skin.getDrawable("button-up");

  • Määrab nupu välimuse, kui see on tavalises (normal) olekus, hankides joonistatava kujutise nimega button-up.

textButtonStyle.down = skin.getDrawable("button-down");

  • Määrab nupu välimuse, kui see on vajutatud (pressed) olekus, hankides joonistatava kujutise nimega button-down.

TextButton textButton = new TextButton("Click me", textButtonStyle);

  • Loob TextButtoni textButtonStyle abil. Nupule kuvatakse tekst Click me. Stiil tagab selle olekute jaoks sobiva välimuse.

textButton.setPosition(100, 100);

  • Määrab nupu asukoha laval (Stage), kusjuures nupu vasak alumine nurk on ekraani koordinaatides (x, y).

textButton.addListener(new ChangeListener() { ... });

  • Lisab nupule kuulaja (Listener). See kuulaja tuvastab nupu oleku muutused, näiteks selle klõpsamise.

Järgnevad nupud töötavad sarnase loogika põhjal.

ImageButton

ImageButton kuvab teksti asemel pilti.

ImageButton.ImageButtonStyle imageButtonStyle = new ImageButton.ImageButtonStyle();

imageButtonStyle.imageUp = skin.getDrawable("button-image-up");

imageButtonStyle.imageDown = skin.getDrawable("button-image-down");



ImageButton imageButton = new ImageButton(imageButtonStyle);

imageButton.setPosition(200, 200);



imageButton.addListener(new ChangeListener() {

    @Override

    public void changed(ChangeEvent event, Actor actor) {

        // Action to perform when button is clicked

    }

});



stage.addActor(imageButton);

(Koodiseletus TextButton koodi all).

ImageTextButton

ImageTextButton ühendab pildi ja teksti.

ImageTextButton.ImageTextButtonStyle imageTextButtonStyle = new ImageTextButton.ImageTextButtonStyle();

imageTextButtonStyle.imageUp = skin.getDrawable("button-image-up");

imageTextButtonStyle.imageDown = skin.getDrawable("button-image-down");

imageTextButtonStyle.font = font;



ImageTextButton imageTextButton = new ImageTextButton("Click me", imageTextButtonStyle);

imageTextButton.setPosition(300, 300);



imageTextButton.addListener(new ChangeListener() {

    @Override

    public void changed(ChangeEvent event, Actor actor) {

        // Action to perform when button is clicked

    }

});



stage.addActor(imageTextButton);

(Koodiseletus TextButton koodi all).

Nupule funktsionaalsuse lisamine

Määra ChangeListener-i changed meetodi sees tegevused, mida teha, kui nuppu vajutatakse.

Teisele ekraanile või stseenile lülitumine

Kui soovite nuppu vajutades lülituda teisele ekraanile või stseenile, saate kasutada libGDX-i Screen klassi.

Esiteks veenduge, et olete oma ekraanid korralikult seadistanud.

Seejärel, changed meetodi sees, kutsuge ekraani vahetamise meetod.

@Override

public void changed(ChangeEvent event, Actor actor) {

    game.setScreen(new NextScreen(game)); // Assuming 'game' is your Game object

}

Helide mängimine

Helide mängimiseks võite kasutada libGDX-i Sound klassi.

Esiteks laadige helifail ja seejärel, changed meetodi sees, mängige heli.

Sound buttonClickSound = Gdx.audio.newSound(Gdx.files.internal("button_click.wav"));



@Override

public void changed(ChangeEvent event, Actor actor) {

    buttonClickSound.play();

}

Konkreetsete mängusündmuste käivitamine

Kui soovite nupu vajutamisel käivitada konkreetseid mängusündmusi, võite otse kutsuda vastavaid meetodeid changed meetodi sees.

@Override

public void changed(ChangeEvent event, Actor actor) {

    gameManager.triggerEvent(); // Call your game manager's method to trigger an event

}

Kohandatud toimingute määratlemine

Samuti saate määratleda kohandatud toimingud, mida tuleb changed meetodi sees teha.

Näiteks võite soovida liigutada tegelast, luua objekti või kuvada sõnumit.

@Override

public void changed(ChangeEvent event, Actor actor) {

    player.moveRight();

    gameManager.spawnEnemy();

    showMessage("Button clicked!");

}

Lõpetuseks

Veenduge, et rakenduse sulgemisel hävitate kõik hävitatavad ressursid, nagu tekstuurid ja fondid.

@Override

public void dispose() {

    stage.dispose();

    skin.dispose();

    font.dispose();

}