2012-11-03 174 views
-6

我正在用3个“生命”构建一个小游戏,并且一个计时器下降。 当生命结束或计时器为零时,我告诉它去“游戏结束”活动。在游戏结束后,我有一个“再试一次”按钮,可以将您发送到欢迎活动,然后重新开始。问题是我认为即使定时器和生活都没有问题,但从上一场比赛开始的定时器仍然在运行,因为它会在接下来的比赛中进行转场活动。重新启动我的应用程序

任何方式我可以重置应用程序启动模式,当有人按“再试一次”?

谢谢:)

编辑:我的代码:这是当时间结束,并进入GAMEOVER活动,

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_test); 
    ImageView iv =(ImageView) findViewById(R.id.imageView1); 
    final TextView mTextField = (TextView) findViewById(R.id.textView2); 
    CountDownTimer one = new CountDownTimer(30000, 1000) { 

    public void onTick(long millisUntilFinished) { 
     mTextField.setText("time: " + millisUntilFinished/1000); 
    } 

    public void onFinish() { 

     toGameOver(null); 

    } 
    }.start(); 

} 




public void toGameOver (View view) 
{ 
    Intent intent = new Intent(this,GameOverActivity.class); 
    intent.putExtra(EXTRA_MESSAGE, points.toString()); 
    startActivity(intent); 

} 

这是当生命结束,它关系到GAMEOVER活动:

public void changepic(View view) 
{ 
    boolean isCorrect=false; 
    int n = 8; 
    ImageView iv =(ImageView) findViewById(R.id.imageView1); 
    TextView tv = (TextView) findViewById(R.id.textView1); 
    if(rndInt<3&&rndInt>0){ 
     isCorrect=true; 
     points++; 
    } 

    if(!isCorrect&&lives==0) 
     toGameOver(null); 
    if (!isCorrect&&lives==1&&rndInt!=0) 
    { 
     lives--; 
     ImageView iv1 = (ImageView) findViewById(R.id.imageView3); 
     iv1.setVisibility(View.INVISIBLE); 
    } 
    if (!isCorrect&&lives==2&&rndInt!=0) 
    { 
     lives--; 
     ImageView iv1 = (ImageView) findViewById(R.id.imageView4); 
     iv1.setVisibility(View.INVISIBLE); 
    } 
    if (!isCorrect&&lives==3&&rndInt!=0) 
    { 
     lives--; 
     ImageView iv1 = (ImageView) findViewById(R.id.imageView2); 
     iv1.setVisibility(View.INVISIBLE); 
    } 

,这是在游戏结束活动时,我希望它去启动:

public void goToStart (View view) 
{ 
    Intent intent = new Intent(this,WelcomeActivity.class); 
    startActivity(intent); 

} 

对不起,问

+5

我们不介意读者。发布您的代码。 – Daedalus

+2

伟大的工作,那么问题在哪里?! –

+1

如果你想在“游戏结束”时关闭计时器,通常有一个'cancel()'方法,或者取决于你正在使用的计时器代码。如果你想在离开时重置你的活动,你可以使用'finish()'方法,甚至当使用意图转到另一个活动时更好的方法是添加一个intent标志来清除活动堆栈'intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP) ;'。 ofc,很难知道这里发生了什么。我正在猜测。 – mango

回答

0

时,如果要停止计时器,当比赛结束时,则函数toGameOver(内),你需要调用one.cancel(),这将导致对取消没有张贴的计时器。然后当游戏重新启动时,你应该打电话给one.start()