我正在重新创建植物大战僵尸,其中使用了两个按钮网格。用户将单击五个工厂按钮之一,然后将被单击的按钮分配给新的Plant对象。然后,在其下方的按钮网格中,用户单击一个空按钮,该按钮现在具有最后单击的植物的图像。单击的网格按钮现已禁用。问题是图像没有改变。
我在每个if循环内的控制台中添加了打印语句,但它不会打印它们,向我显示该语句不符合那里的任何语句,而直接转到else语句。我还添加了一条print语句来打印getPlantHeld,它确实可以正确打印if循环外的植物。
我不知道此代码的可重复性,因为它包含许多图像并使用7个类来运行,但这是相关的。这是网格按钮处理程序。
public void handle(ActionEvent event) {
System.out.println("player.getPlantHeld()");//this is printed out correctly
Button source = (Button) event.getSource();
ImageView plant = null;
if (player.getPlantHeld()== "Sunflower") {
try {
plant = new ImageView(new Image(new FileInputStream("Sunflower.gif")));
} catch (FileNotFoundException e) {
e.printStackTrace();
}
} else if (player.getPlantHeld()== "PeaShooter") {
try {
plant = new ImageView(new Image(new FileInputStream("pea-shooter.gif")));
} catch (FileNotFoundException e) {
e.printStackTrace();
}//other else-if statements
} else {
System.out.println("error");
}
source.setGraphic(plant);
source.setDisable(true);
}}
所持植物的吸气剂和吸气剂在球员班上
private String plantHeld;
public String getPlantHeld() {
return new String(this.plantHeld);
}
public void setPlantHeld(String aPlant) {
this.plantHeld = aPlant;
System.out.println(getPlantHeld());//the plant held is printed out accordingly so I know that there is a String in getPlantHeld().
}
这是设置植物保持字符串的PlantButtonHandlerClass
public void handle(ActionEvent event){
Button source = (Button) event.getSource();
if (source.getText().contains("p0")) {
player.setPlantHeld("FrozenPeaShooter");
} else if (source.getText().contains("p1")) {
player.setPlantHeld("PeaShooter");
} else if (source.getText().contains("p2")) {
player.setPlantHeld("Sunflower");
} else if (source.getText().contains("p3")) {
player.setPlantHeld("CherryBomb");
} else if (source.getText().contains("p4")) {
player.setPlantHeld("Wallnut");
}}}
我希望将空按钮设置为在植物按钮中单击的图像,但实际输出是else语句,其中会打印错误,因为player.getPlantHeld()不等于任何植物。
例如,运行此命令时,单击“向日葵”按钮,以便在控制台中打印“向日葵”。然后,我单击一个花园按钮,同时打印“向日葵”和“错误”。我不明白为什么这行代码不会返回true并在if循环内运行语句,这意味着更改图像。因为在控制台中,我可以看到“ Sunflower” ==“ Sunflower”是真实的。
if (player.getPlantHeld() == "Sunflower"){
//my code here
}
预先感谢您的帮助!我希望我的问题有意义。