我正在开发一款Android游戏,其中大约有50个级别,每个级别代表一个activity
。例如。 Level1
,Level2
... Level50
。
完成每个级别后,我将切换到LevelUpActivity
,其中我显示当前得分和玩家等级以及Level Up消息。点击按钮我将切换到下一级游戏。现在我的问题是,当我拥有当前级别号码时,如何切换到下一个activity
(级别)?
例如。假设我已清除Level2
,那么我想从Level3
跳过LevelUpActivity
这样做的有效方法是什么?目前,我通过使用Switch Case语句获得此任务的成功。但它是否能有效地工作50个或更多的数字来检查并相应地切换活动?
以下代码段显示了LevelUpActivity
public class LevelUpActivity extends Activity implements View.OnClickListener {
Button btn_continue;
TextView scoreview, levelview;
int score, level;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.level_up);
Intent intent = getIntent();
Bundle bundle = intent.getExtras();
score = bundle.getInt("score");
level = bundle.getInt("levelno");
System.out.println("Current Score = " + score);
levelview = (TextView) findViewById(R.id.levelView);
levelview.setText("Level " + level + " Completed");
scoreview = (TextView) findViewById(R.id.score);
scoreview.setText(score + "");
btn_continue = (Button) findViewById(R.id.levelbtn);
btn_continue.setOnClickListener(this);
}
@Override
public void onClick(View v) {
if (v.getId() == R.id.levelbtn) {
Intent i;
switch (level) {
case 1:
i = new Intent(this, Level2.class);
i.putExtra("score", score);
startActivity(i);
break;
case 2:
i = new Intent(this, Level3.class);
i.putExtra("score", score);
startActivity(i);
break;
case 3:
i = new Intent(this, Level3.class);
i.putExtra("score", score);
startActivity(i);
break;
}
}
}
}
答案 0 :(得分:0)
switch语句的性能不会因语句数量而显着下降。但是,switch语句将会非常长。
假设每个level
活动都遵循相同的界面(即他们接受"得分"而没有别的),那么您可以将所有级别放在一个数组中。 / p>
private static final Class<Activity>[] levels = [
Level1.class,
Level2.class,
Level3.class,
...
Level4.class
]
然后就像这样检索它们:
int levelNumber = someMethodToGetLevelNumber();
Class<Activity> levelClass = levels[levelNumber];
Intent i = new Intent(this, Level2.class);
i.putExtra("score", score);
startActivity(i);