내 앱 (안드로이드 게임)에는 플레이어가 아직 살아 있는지 확인하고 그렇지 않은 경우 애니메이션이 실행되고 게임이 끝난다.Java Switch 구문 혼란
현재 플레이어가 잃는 방법에 따라 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 문 내에서
switch(hero.killedBy()){
case hero.HITBIRD {
fallOffScreenAnimation();break;
}
//............... and so on.......
, 내 영웅 객체를 인식하지? 왜 이런거야? 난 그냥 어쨌든 입력하면, (경우 hero.HITBIRD가), 나는이 오류 얻을 :
case expressions must be constant expressions
분명히을, 가독성, 나는 많이 나는 원시 수치보다는 설정 한 변수 이름을 사용하는 것을 선호 ......
이 항목을 확인하십시오. http://stackoverflow.com/questions/3827393/java-switch-statement-constant-expression-required-but-it-is-constant –
감사합니다. @BorisIvanov, 빠른 답변을 받았습니다. '이니셜 라이저 사용'이 의미하는 바를 잘 모르겠다. 이것이 의미할까요? (예를 들어) int FELLOFFSCREEN으로 선언 한 다음 어딘가에 설정합니다. FELLOFFSCREEN = 0? 이 경우 최종 키워드를 사용할 수 없다고 추측합니다. 감사합니다 – Zippy
먼저 public final static int XXX = 1을 시도해 볼 수 있습니까? 또는 ENUM? –