1

私は現在 Greenfoot を使用しており、Java を学んでいます。私は静的/非静的に関しては非常に初心者であり、インスタンスについても不安です。

Greenfoot には、ワールド クラスがあります。それをWorldと呼びましょう。これで、 Carという名前の別のクラスと、1 つのサブクラスRedcarができました。最後に、Buttonクラスがあります。

Greenfoot に精通している場合は、redcar (小文字のみ) という名前の Redcar のインスタンスを作成し、 addObject(); を介してWorldに追加しました。

public World() { 

    super(1000, 200, 1); 

    Redcar redcar = new Redcar();
    Button button = new Button();

    addObject(redcar, 45, 45);
    addObject(button, 960, 175);
}

以下を含むCarクラス内

public class Car extends Actor {

    int carSpeed = 0;

    public void drive() {
        carSpeed++;
        move(carSpeed);
    }
}

Redcarから呼び出された場合、 drive が呼び出されるたびにRedcarをさらに移動します。ただし、ボタンがクリックされたときにこれが発生するようにします。私のWorldクラス内で、これを実現するために何かを設定したいと思います。

if (Greenfoot.mouseClicked(button)) {
    redcar.drive();
}

ただし、それをWorldコンストラクター内に配置すると、Greenfoot プロジェクトの実行時に実行されません。while ループ内に入れてみたので、マウスのクリックを継続的に探しましたが、うまくいきませんでした。実際、Greenfoot がクラッシュしました。

この質問が紛らわしい表現で申し訳ありませんが、必要に応じて修正します。基本的に、私の質問はこれです。クラスのメソッドを呼び出して、別のクラスからインスタンスを操作するにはどうすればよいですか? たとえば、ボタン クラスの redcar (インスタンス) に作用する drive() メソッド

4

1 に答える 1

0

ええと、あなたの質問を理解したら、インスタンスを可視化する必要があります。このようなもの、

private Redcar redcar;                   // <-- if you want to access redcar in World.
public World() { 
  super(1000, 200, 1); 
  redcar = new Redcar();                    // <-- Use the redcar field
  Button button = new Button(this, redcar); // <-- if you want to access this World  
                                            // instance and redcar in Button.
  addObject(redcar, 45, 45);
  addObject(button, 960, 175);
}
于 2014-05-15T00:31:43.277 に答える