Getter und Setter / Zugriff auf Variablen aus anderen Klassen

Sushi _HD:

Ich habe zwei Klassen Player und menuState. Abhängig von einer Variablen in der Player-Klasse mit dem Namen "model" ändert sich das Modell des Players. Jetzt möchte ich das Modell über eine Schaltfläche im Menü ändern, aber ich kann nicht herausfinden, wie ich auf die Variable "model" aus dem menuState zugreifen kann, ohne ein neues Player-Objekt zu erstellen.

Meine Spielerklasse:

package entitys;

import State.State;
import data.Handler;
import grafik.Animation;
import grafik.Assets;


import java.awt.*;

public class Player extends Creature {

private Animation playerWalkLeft;
private Animation playerWalkRight;
private Animation playerIdle;
private int model = 1;
public Player(Handler handler, float x, float y) {
    super(handler, x, y, Creature.DEFAULT_CREATURE_WIDTH, 112);

    bounds.x = 6;
    bounds.y = 52;
    bounds.width = 52;
    bounds.height = 64;


    if (model == 1) {
        playerWalkLeft = new Animation(6,Assets.fairy_run[0],Assets.fairy_run[1],Assets.fairy_run[2],Assets.fairy_run[3]);
        playerWalkRight = new Animation(6,Assets.fairy_run[0],Assets.fairy_run[1],Assets.fairy_run[2],Assets.fairy_run[3]);
        playerIdle = new Animation(10,Assets.fairy_idle[0],Assets.fairy_idle[1],Assets.fairy_idle[2],Assets.fairy_idle[3]);
    }else if (model == 2) {
        playerWalkLeft = new Animation(6, Assets.dragon_run[0], Assets.dragon_run[1], Assets.dragon_run[2], Assets.dragon_run[3]);
        playerWalkRight = new Animation(6, Assets.dragon_run[0], Assets.dragon_run[1], Assets.dragon_run[2], Assets.dragon_run[3]);
        playerIdle = new Animation(10, Assets.dragon_idle[0], Assets.dragon_idle[1], Assets.dragon_idle[2], Assets.dragon_idle[3]);
    }else if (model == 3) {
        playerWalkLeft = new Animation(6, Assets.wizzard_run[0], Assets.wizzard_run[1], Assets.wizzard_run[2], Assets.wizzard_run[3]);
        playerWalkRight = new Animation(6, Assets.wizzard_run[0], Assets.wizzard_run[1], Assets.wizzard_run[2], Assets.wizzard_run[3]);
        playerIdle = new Animation(10, Assets.wizzard_idle[0], Assets.wizzard_idle[1], Assets.wizzard_idle[2], Assets.wizzard_idle[3]);
    } else if (model == 4){
        playerWalkLeft = new Animation(6, Assets.knight_run[0], Assets.knight_run[1], Assets.knight_run[2], Assets.knight_run[3]);
        playerWalkRight = new Animation(6, Assets.knight_run[0], Assets.knight_run[1], Assets.knight_run[2], Assets.knight_run[3]);
        playerIdle = new Animation(10, Assets.knight_idle[0], Assets.knight_idle[1], Assets.knight_idle[2], Assets.knight_idle[3]);
    }

}



@Override
public void tick() {
    getInput();
    move();

    handler.getCamera().centerOnEntity(this);
    playerWalkRight.runAnimation();
    playerIdle.runAnimation();
    playerWalkLeft.runAnimation();
}

private void getInput() {
    xMove = 0;
    yMove = 0;

    if (handler.getKeyManager().up)
        yMove = -speed;
    if (handler.getKeyManager().down)
        yMove = speed;
    if (handler.getKeyManager().left)
        xMove = -speed;
    if (handler.getKeyManager().right)
        xMove = speed;
    if (handler.getKeyManager().escape)
        State.setState(handler.getGame().menuState);
}

@Override
public void render(Graphics g) {
    if(xMove >0) {
        playerWalkRight.drawAnimation(g,(int) (x - handler.getCamera().getxOffset()), (int) (y - handler.getCamera().getyOffset()), width, 112);
    }
    else if(xMove<0){
        playerWalkLeft.drawAnimation(g,(int) (x - handler.getCamera().getxOffset()), (int) (y - handler.getCamera().getyOffset()), width, 112);

    }
    else {
        playerIdle.drawAnimation(g,(int) (x - handler.getCamera().getxOffset()), (int) (y - handler.getCamera().getyOffset()), width, 112);

    }
    if (handler.getKeyManager().debug) {
        g.setColor(Color.red);
        g.drawRect((int) (x + bounds.x - handler.getCamera().getxOffset()),
                (int) (y + bounds.y - handler.getCamera().getyOffset()),
                bounds.width, bounds.height);
    }
}

public int getModel() {
    return model;
}

public void setModel(int model) {
    this.model = model;
}

}}

Meine menuState-Klasse:

package State;

import data.Handler;
import grafik.Assets;
import ui.ClickListener;
import ui.UIImageButton;
import ui.UIManager;
import entitys.Player;

import java.awt.*;

public class MenuState extends State {

private UIManager uiManager;

public MenuState(Handler handler) {
    super(handler);
    uiManager = new UIManager(handler);
    handler.getMouseManager().setUiManager(uiManager);



    uiManager.addObject(new UIImageButton(144, 286, 64, 128, Assets.btn_dragon, new ClickListener() {
    @Override
    public void onClick(){
        State.setState(handler.getGame().gameState);
        //p.setModel(2);
    }
    }));

    uiManager.addObject(new UIImageButton(464, 286, 64, 128, Assets.btn_wizzard, new ClickListener() {
        @Override
        public void onClick(){
            State.setState(handler.getGame().gameState);
            //p.setModel(3);
        }
    }));

    uiManager.addObject(new UIImageButton(784, 286, 64, 128, Assets.btn_knight, new ClickListener() {
        @Override
        public void onClick(){
            State.setState(handler.getGame().gameState);
            //p.setModel(4);
        }
    }));
    uiManager.addObject(new UIImageButton(1104, 286, 64, 128, Assets.btn_fairy, new ClickListener() {
        @Override
        public void onClick(){
            State.setState(handler.getGame().gameState);
            //p.setModel(1);

        }
    }));


}


@Override
public void tick() {
    uiManager.tick();
}

@Override
public void render(Graphics g) {
    uiManager.render(g);
}

}}

Danke im Voraus

huehue:

Sie können das Modellfeld in der MenuState-Klasse erstellen und seinen Wert beim Klicken ändern, anstatt das Modellfeld in der Player-Klasse, wenn Sie nicht möchten, dass es mit einer bestimmten Player-Instanz verknüpft ist. Dies ist die einfachste Lösung. Lassen Sie mich wissen, ob dies geholfen hat.

Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.

Bei Verstößen wenden Sie sich bitte [email protected] Löschen.

bearbeiten am
0

Lass mich ein paar Worte sagen

0Kommentare
LoginNach der Teilnahme an der Überprüfung

Verwandte Artikel

Zugriff auf Getter und Setter in einem Stream

Zugriff auf Variablen über automatisch generierte Getter aus einem anderen Vertrag

Zugriff auf Variablen aus anderen Dateien

Zugriff auf Variablen in verschachtelten Klassen

Zugriff auf Variablen von einer Klasse aus einer anderen

Zugriff auf Variablen aus einer Klassendatei in einer anderen

Zugriff auf und Aggregatauswahl aus verschiedenen Klassen Django

Zugriff auf Variablen in einer anderen Funktion und Plugin in Wordpress

Setter und Getter zu verschiedenen Klassen

Zugriff auf Variablen in CodeIgniter-Klassen

Zugriff auf Variablen und Methoden zwischen Klassen mit Referenz und Singleton

Zugriff auf Klassenkonstanten und -variablen

Aufrufen von Variablen aus anderen Klassen in Java

Variablen aus einer Klasse in anderen Klassen verwenden

Getter-Setter und private Variablen

PyQT Zugriff auf UI-Elemente aus anderen Klassen (Qthread) in derselben Datei

Zugriff auf die Silex Application-Klasse von anderen Klassen aus; Wie spritze ich?

Verwenden einer generischen Klasse für den Zugriff auf andere Methoden aus anderen Klassen

Einfache Java-Prüfungsfrage, Zugriff auf Methoden aus anderen Klassen

Zugriff auf dieselbe Variable aus mehreren Klassen

Warum kann ich nicht auf öffentliche Variablen aus anderen Klassen zugreifen?

So greifen Sie auf Variablen in kotlin zu, ohne dessen Setter und Getter aufzurufen

Zugriff auf Variablen von anderen Funktionen in Python

Zugriff auf Variablen von einer anderen Funktion

Zugriff auf eine Zufallsvariable aus einem Array zur Verwendung in einer anderen Variablen

Zugriff auf Eigenschaften geerbter Klassen aus abstrakten Klassen

Zugriff auf Methoden und Klassen aus meinem Projekt in Windows Runtime Component in UWP nicht möglich

Zugriff auf exportierte TypeScript-Klassen aus JavaScript mit AMD und RequireJS

Zugriff auf Klassendaten im Static Setter in ES6-Klassen

TOP Liste

  1. 1

    So legen Sie mit dem Interface Builder unterschiedliche führende Speicherplätze für unterschiedliche Geräte fest

  2. 2

    Fügen Sie eine weitere Schaltfläche zu gwt Suggest Box hinzu

  3. 3

    Wie konvertiere ich einen Vektor von Bytes (u8) in eine Zeichenfolge?

  4. 4

    Wie kann ich in SCSS mehrere Klassen zu einer einzigen kombinieren?

  5. 5

    Wie konvertiert man einen Datenrahmen im langen Format in eine Liste mit einem geeigneten Format?

  6. 6

    Speichern Sie ein MPAndroidChart-Diagramm in einem Bild, ohne es in einer Aktivität anzuzeigen

  7. 7

    Gruppieren Sie Datenrahmenspalten nach ihrem Datum (die Spaltentitel enthalten) und fassen Sie die Instanzen von Einsen und Nullen in R . zusammen

  8. 8

    Tomcat - Leiten Sie den alten Kontextstamm zum neuen Kontextstamm um

  9. 9

    Eclipse Oxygen - Projekte verschwinden

  10. 10

    Wie wählt man Unterschiede mit drei Tabellen aus?

  11. 11

    Tic Tac Toe-Spiel im React-Reset-Button funktioniert nicht

  12. 12

    So berechnen Sie die Verfügbarkeit von Anwendungen (SLA)

  13. 13

    ElasticSearch BulkShardRequest ist aufgrund von org.elasticsearch.common.util.concurrent.EsThreadPoolExecutor fehlgeschlagen

  14. 14

    Wie kann ich den Kaskadenmodus global einstellen?

  15. 15

    Python: Spalten mit demselben Namen zusammenführen, wobei der Mindestwert beibehalten wird

  16. 16

    So erhalten Sie eine gleichmäßige Höhe für alle Eingabefelder

  17. 17

    Wie erstelle ich einen neuen übergeordneten Knoten außerhalb der .ref (/ path) in der Firebase-Echtzeitdatenbank mithilfe von Cloud-Funktionen (Typescript)?

  18. 18

    Was ist schneller: SUM über NULL oder über 0?

  19. 19

    Wie kann ich eine verschachtelte Schleife mit lapply in R ersetzen?

  20. 20

    Kann ich ein Tkinter-Canvas erstellen, das mehrere Zeilen in einem Text-Widget umfasst?

  21. 21

    Ärgerliches Problem mit yaml, das ich nicht lösen kann

heißlabel

Archiv