私は現在、さまざまな時間にランダムにポップアップするいくつかのターゲットからなる小さなゲームに取り組んでいます。ターゲットが物理的なので、実際のゲームは回路基板からのI/Oを取得します。Java - タイマーによって制御される複数のオブジェクト(ゲーム用)
私の問題は、現在、2秒ごとに発火するjava.util.Timerがあることです。トリガされるとランダムなターゲットが表示されます(これまでのところうまくいきます)。問題は、タイマーがまだ動作している間に1から5までのランダムな秒数のターゲットを表示し、他のターゲットを設定したいということです。
エラーは表示されず、ターゲットは表示されますが消えません。私はそれがスレッドの問題のいくつかの種類だと思うし、おそらく私はを使用しているので*ターゲットオブジェクトはちょうど何とかnetherで失われている!私はこれが出ている、ここで質問を中心に検索した後:
public class Target implements Runnable(){
...
public void displayFor(int seconds){
this.display();
Executors.newSingleThreadScheduledExecutor().schedule(this,time,
TimeUnit.SECONDS);
this.setDisplayed(false);
}
@Override
public void run() {
this.destroy();
}
}
基本的には初期のゲームタイマー(ターゲットディスプレイのセットがあること)の後にメソッドを実行し、ターゲットを実行しますdisplayFor(2)メソッドを呼び出します時は過ぎた。ターゲットはまだ消えません。
私はは別のjava.util.Timerをオフに設定)displayFor(のようにこれを行うの異なるいくつかの方法を試してみましたが、私はまた、Quartzライブラリを使用してで行く(正直に言うと、とにかくやり過ぎのように思えていました)、まだそれを動作させることはできません。エラーメッセージがないので、私は本当にこのメッセージに固執しています。
私はそれがその関連はないと思うので、私は多くのコードを含めていないましたが、あなたたちは私だけが知っている:)
それらを描画するときは、毎回キャンバスをクリアしますか?または、それらが現れるときにそれらを描くだけですか? – corsiKa
@glowcoder私は何も描画していません、ターゲットは現実世界の物理的なオブジェクトなので、私は表示すると出力を回路基板に送ります – Peter
すべてのdisplayFor()呼び出しで新しいエグゼキュータを作成すべきではありません。クラスメンバーにして再利用してください。 – Stephan