Methoden Boolean wird nicht gesetzt

teamanym

Mitglied
Hi, ich habe ein kleines Spiel geschrieben indem es einen Shop gibt. Allerdings funktioniert dass kaufen nicht, bzw der übergebene boolean wird nicht auf true gesetzt.

Erstellung:
Java:
buyInfo b = new buyInfo();
b.BuyIt(variable.bRed, variable.btnC1, 0);

Das ist der Code und der boolean buttonBought soll true werden.
Java:
    public buyInfo() {
        super();
        mBox = new messageBox(226, variable.height, 400, 80, "");
    }

public void BuyIt(boolean buttonBought, shopButton button, int select) {

        if (!buttonBought) {
            if (variable.coins >= button.getPrice()) {
                mBox.setY(variable.height);
                variable.coins -= button.getPrice();
                buttonBought = true;
                mBox.setText("Kauf erfolgreich!");
                t = new Timer();
                t.scheduleAtFixedRate(new TimerTask() {

                    @Override
                    public void run() {
                        if (!finished) {
                            if (mBox.getY() > variable.height - 102) {
                                mBox.setY(mBox.getY() - 1);
                            } else {
                                finished = true;

                            }
                        } else {

                            if (!wait) {
                                // try {
                                // TimeUnit.MILLISECONDS.sleep(500);
                                // } catch (InterruptedException e) {
                                // // TODO Auto-generated catch block
                                // e.printStackTrace();
                                // }
                                wait = true;
                            } else {

                                if (mBox.getY() < variable.height + 1) {
                                    mBox.setY(mBox.getY() + 1);
                                } else {
                                    finished = false;
                                    t.cancel();
                                }
                            }
                        }

                    }
                }, 0, 25);
            } else {

                mBox.setText("Kauf fehlgeschlagen!");

                t2 = new Timer();
                t2.scheduleAtFixedRate(new TimerTask() {
                    boolean finished = false, wait = false;

                    @Override
                    public void run() {
                        if (!finished) {
                            if (mBox.getY() > variable.height - 102) {
                                mBox.setY(mBox.getY() - 1);

                            } else {
                                finished = true;

                            }
                        } else {

                            if (!wait) {
                                // try {
                                // TimeUnit.MILLISECONDS.sleep(500);
                                // } catch (InterruptedException e) {
                                // // TODO Auto-generated catch block
                                // e.printStackTrace();
                                // }
                                wait = true;
                            } else {

                                if (mBox.getY() < variable.height + 1) {
                                    mBox.setY(mBox.getY() + 1);

                                } else {
                                    finished = false;
                                    t2.cancel();
                                }
                            }
                        }

                    }
                }, 0, 25);
            }
        } else {
            variable.selected = select;
        }

    }

Vielen Dank ^^
 
Die Variable (bzw. der Parameter buttonBought) wird ja auch auf true gesetzt. Aber das wirkt sich natürlich nicht auf die Variable aus, die als aktuelles Argument für den Parameter beim Aufruf angegeben wurde, nämlich variable.bRed.

Java ist Pass-By-Value.

Wenn du möchtest, dass sich variable.bRed beim Buttonklick ändert, dann ändere auch dieses Feld in der Methode. Oder gib den gewünschten neuen Wert als Rückgabewert der Methode BuyIt() zurück.
 

Zurück
Oben