2016-05-01 15 views
0

私は2人のプレイヤーを持つゲームを持っています。それがプレイヤーのターンであるとき、他のプレイヤーは(TilePaneにある)自分の作品をクリックすることはできません。プレイヤーがプレイすると、カウンターが増加し、その順番を確認するのが簡単です。JavaFX重複ペイン

public void switchPlayer() { 
    if (this.counter % 2 == 0) { 
     drawer.getBlackPane().getStyleClass().remove("play"); 
     drawer.getWhitePane().getStyleClass().add("play"); 
     drawer.getBlackPane().setDisable(true); 
     drawer.getWhitePane().setDisable(false); 
    } else { 
     drawer.getWhitePane().getStyleClass().remove("play"); 
     drawer.getBlackPane().getStyleClass().add("play"); 
     drawer.getWhitePane().setDisable(true); 
     drawer.getBlackPane().setDisable(false); 
    } 
} 

cssスタイルは、ペインの周りに緑色の境界線を描画します。緑色の境界線は、回転しているプレーヤーのピースで囲まれています。

この重複を避けるにはどうすればよいですか?このメソッドに引数としてbooleanとPaneを追加することを考えましたが、そのように修正することはできません。

答えて

2

を行うことができます。

など。 (前提としていますが、黒&白のペインにplayer-paneクラスを追加しました):

public void switchPlayer() { 
    boolean whiteTurn = (this.counter % 2 == 0); 

    drawer.getBlackPane().setDisable(whiteTurn); 
    drawer.getWhitePane().setDisable(!whiteTurn); 
} 

.player-pane { 
    /* style for active player pane */ 
} 

.player-pane:disabled { 
    /* style for inactive player pane */ 
} 

あなたはまた、ブール変数(+否定)はdisableプロパティを設定することができます

1

あなたは(CSS referenceを参照)だけdisabled疑似クラスでplay CSSクラスを置き換える

private void updateTurns(Node active, Node inactive) { 
    inactive.getStyleClass().remove("play"); 
    active.getStyleClass().add("play"); 
    inactive.setDisable(true); 
    active.setDisable(false); 
} 

、その後

public void switchPlayer() { 
    if (this.counter % 2 == 0) { 
     updateTurns(drawer.getWhitePane(), drawer.getBlackPane()); 
    } else { 
     updateTurns(drawer.getBlackPane(), drawer.getWhitePane()); 
    } 
}