2017-08-23 1 views
1

私は現在、2つのマウスイベントをリンクする必要があるプロジェクトに取り組んでいます。ゲームは、画面上のたくさんの風船から2つの動いている風船を比較することで構成されています。命令は、次のとおりです。これらの2つのマウスイベントをリンクするにはどうすればよいですか? JavaFx

  1. 私は英語のテキスト(マウスイベント1)を持つバルーンをクリックし、バルーンが停止すべきと私はテキストの文字列を取得する必要があります
  2. どこかに保管私は内のテキストを持っているバルーンをクリックしてくださいスペイン語(マウスイベント2)、バルーンを停止すべきと私はテキストの文字列を取得する必要があります単語の訳が正しければその後スペイン語のテキストと比較して、英語で
  3. テキストを取得します
  4. どこかに保管

をクリックしてください、風船が消えると私は人生を失うことはありません(「命」は長方形です) esをHBoxに設定してください)、そうでなければ人生を失い、風船が消える。

だった私の心に来た他の事:

  1. クリックしてバルーン、バルーン停止(マウスイベント1)
  2. クリックしてバルーン、バルーン停止(マウスイベント2)

プログラムは私がそれらの2つの風船をクリックしたことを知るべきです。次に、バルーンを比較して、翻訳が間違っているか正しいものであるかどうかを確認し、それらが消えるようにする方法を使用できます。

+2

あなたの問題は説明されていますが、あなたの質問は何ですか?あなたは[mcve]を提供できますか?あなたはどのような答えが似て見えると思いますか? – jewelsea

答えて

0

EventHandlerを各バルーンに追加し、別の変数を使用する最初のバルーンまたは第2バルーンがあるかどうかを確認する必要があります。このようなもの:

public class ViewController { 

    private String savedStr; 

    public void init() { 
    for (Baloon baloon : baloons) { 
     baloon.setOnMouseClicked(event -> { 
      if (savedStr == null) { // Mouse Event 1 
       savedStr = baloon.getString()); 
      } else { // Mouse Event 2 
       checkTranslation(savedStr, baloon.getString()); 
       savedStr = null; 
      } 
     } 
    } 
    } 
} 
+0

Netbeansは、ラムダ式から参照されるローカル変数は、これを使用するときに最終的に、または効果的に最終的でなければならないと言います。私は内部クラスを使ってちょっと解決したと思う。ありがとう。 –

+0

それは本当です。 savedStr変数は、ローカル変数ではなくクラスフィールドである必要があります。私は答えを編集しました。 –

関連する問題