【发布时间】:2014-11-02 19:50:37
【问题描述】:
在我的应用程序(这是一款 Android 游戏)中,我有一个方法可以检查玩家是否还活着,如果没有,则运行动画并结束游戏。
目前有 3 种不同的动画可用,具体取决于玩家输球的方式。
因此,例如,他们可能会从屏幕上掉下来、撞到鸟,或者被从天上掉下来的东西压扁。每个都有不同的动画。
基本上,我正在做的是:
当玩家输了,我设置了它发生的方法,例如,如果他们被鸟击中:
hero.setKilledBy(hero.HITBIRD);
然后我通过在我的 checkGameOver() 方法中切换来执行此操作。然而,我很困惑。我必须像这样检查它:(注意,在我的情况下,我必须输入 0、1、2):
switch(hero.killedBy()){
case 0: {
fallOffScreenAnimation();break;
}
case 1: {
hitBirdAnimation();break;
}
case 2: {
squashedAnimation();
}
}
在我的英雄对象的类中,我有以下方法
int killedBy;
final int FELLOFFSCREEN = 0;
final int HITBIRD = 1;
final int SQUASHED = 2;
int killedBy(){
return killedBy;
}
int setKilledBy(int value){
killedBy = value;
}
所以,我的问题是,为什么我不能这样做:
switch(hero.killedBy()){
case hero.HITBIRD {
fallOffScreenAnimation();break;
}
//............... and so on.......
在 switch 语句中,我的 hero 对象没有被识别?为什么是这样?如果我只是输入它,(case hero.HITBIRD),我会收到这个错误:
case 表达式必须是常量表达式
显然,为了可读性,我更喜欢使用我设置的变量名而不是原始数值......
【问题讨论】:
-
谢谢@BorisIvanov,我已经快速阅读了。我不确定我理解“使用初始化程序”是什么意思?这是否意味着 - 将其声明为(例如)int FELLOFFSCREEN,然后将其设置在某处 - 所以,FELLOFFSCREEN = 0?如果是这种情况,我猜我不能使用 final 关键字? - 谢谢
-
你可以先试试 public final static int XXX = 1;或枚举?
-
谢谢@BorisIvanov,我想我会选择枚举:-)
标签: java variables switch-statement final