2014-12-21 4 views
0

Android 용이 애플리케이션에서 버튼 체이서 (Button Chaser)라고합니다. 일시 중지하고 메커니즘을 재개해야합니다. 일시 중지 메커니즘을 만들었지 만 정상적으로 작동하지만 Resume을 만드는 데 문제가 있습니다. 어떻게 재개 메커니즘을 만들 수 있습니까?재개 및 일시 중지 메커니즘

package com.example.buttonchaser; 

import java.util.Random; 
import java.util.Timer; 

import android.support.v7.app.ActionBarActivity; 
import android.os.Bundle; 
import android.view.*; 
import android.widget.*; 
import android.graphics.Point; 
import android.view.View.OnClickListener; 


public class ButtonChaserActivity extends ActionBarActivity implements OnClickListener{ 
private Button btn; 

private TextView lblScore; 
private Timer timer; 
private int x, y, w, h, score; 
ButtonChaserTimerTask task; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_button_chaser); 
    //Inflate UI 
    btn = (Button)findViewById(R.id.btn); 
    lblScore = (TextView)findViewById(R.id.lblScore); 

    btn.setOnClickListener(this); 
    Display display = getWindowManager().getDefaultDisplay(); 
    Point size = new Point(); 
    display.getSize(size); 
    w = size.x - btn.getWidth() - 48; 
    h = size.y - btn.getHeight() - 48; 
    timer = new Timer(); 
    task = new ButtonChaserTimerTask(this); 
    timer.schedule(task, 0, 1500); 

} 



@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.button_chaser, menu); 
    return true; 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    // Handle action bar item clicks here. The action bar will 
    // automatically handle clicks on the Home/Up button, so long 
    // as you specify a parent activity in AndroidManifest.xml. 
    switch(item.getItemId()){ 
     case R.id.mnuEasy: 
      newGame(); 
      return true; 
     case R.id.mnuMed: 
      medGame(); 
      return true; 
     case R.id.mnuHard: 
      hardGame(); 
      return true; 
     case R.id.mnuNew: 
     newGame(); 
     return true; 
    case R.id.mnuQuit: 
     quit(); 
     return true; 

    default: 
     return super.onOptionsItemSelected(item); 
    } 
} 

public void newGame(){ 
    score = 0; 
    lblScore.setText("Score: " + score); 
    timer = new Timer(); 
    task = new ButtonChaserTimerTask(this); 
    timer.schedule(task, 0, 1500); 
} 
public void medGame(){ 
    score = 0; 
    lblScore.setText("Score: " + score); 
    timer = new Timer(); 
    task = new ButtonChaserTimerTask(this); 
    timer.schedule(task, 0, 500); 
} 
public void hardGame(){ 
    score = 0; 
    lblScore.setText("Score: " + score); 
    timer = new Timer(); 
    task = new ButtonChaserTimerTask(this); 
    timer.schedule(task, 0, 250); 
} 

public void quit(){ 
    timer.cancel(); 
    finish(); 
} 

public void moveButton(){ 
    Random generator = new Random(); 
    generator.setSeed(System.currentTimeMillis()); 
    float f = generator.nextFloat(); 
    x = (int)(f*w)%w; 
    f = generator.nextFloat(); 
    y = (int)(f*h)%h; 
    btn.setX(x); 
    btn.setY(y); 
} 

public void pauseOnClick(View view) { 
    Button pause = (Button) view; 
    ((Button)view).setText("Resume"); 
     timer.cancel();} 

     //((Button)view).setText("Pause"); 
     //moveButton(); 





@Override 
public void onClick(View v) { 
    score +=1; 
    lblScore.setText("Score: " + score); 

} 
} 
+0

참고로, 게임 유형에 대해 가지고있는 3 가지 메소드는 단일 메소드로 줄이기 위해 단일 int를 사용해야합니다. 코드 반복은 악취가 난다. – ChiefTwoPencils

답변

-3

당신은 onPause와 onResume 방법을 추가 할 수 있습니다 :

@Override 
public void onPause() { 

} 

@Override 
public void onResume() { 

} 

그런 다음 적절한 섹션에서 일시 정지 코드 및 재개 코드를 삽입이 내 코드입니다.

+1

이것은 OP가 요구 한 것이 아니다. –

+0

아니, 전혀. – jjm

관련 문제