2013-07-31 31 views
0

我有一个有时间限制的我的机器人问答游戏。我想要的是有一个选择按钮,如果你点击其中一个按钮,你将自动地意图到下一级的课程,但如果你没有回答或点击任何按钮,你将意图到另一个班级,那就是为什么游戏有时间限制。我的问题是我不知道如何把时间限制,意图或将您转移到另一个类自动如果你没有点击任何按钮的选择。我尝试了睡眠,但是发生了什么事情,即使我已经点击了正确的答案,并且即将进入下一阶段的课程,它将睡眠到我喜欢睡觉的课程。请帮我解决我的问题。我也尝试处理程序,但没有工作我如何在我的Android游戏中编码时间限制

public class EasyOne extends Activity { 

按钮a,b,c; TextView定时器;

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.easyone); 
    a = (Button) findViewById(R.id.btn_ea1); 
    b = (Button) findViewById(R.id.btn_eb1); 
    c = (Button) findViewById(R.id.btn_ec1); 
    a.setOnClickListener(new View.OnClickListener() { 
    @Override 
      public void onClick(View v) { 
       Toast.makeText(getApplicationContext(),"CORRECT!", 
         Toast.LENGTH_SHORT).show(); 
       Intent intent = new  Intent(getApplicationContext(),EasyTwo.class); 
       startActivity(intent); 
     } 
    }); 
} 

private Runnable task = new Runnable() { 
    public void run() { 
     Handler handler = new Handler(); 
     handler.postDelayed(task, 5000); 
     Intent intent = new Intent(getApplicationContext(),TimesUp.class); 
      startActivity(intent); 

    } 
}; 
+0

处理器是该解决方案是正确的做法,但你只需要稍作调整。添加一个字段变量,用于保存每一轮所需的时间,例如'ROUND_LIMIT = 5',然后在放入'ROUND_LIMIT - '的末尾的任务中,检查该值何时达到0,然后启动结束循环意图,否则如果用户在启动正确或不正确的答案意图之前回答。同样在这种情况下,您需要将'postDelayed'计时器更改为'1000'而不是'5000' – kabuto178

+0

您能告诉我病人应该更改和添加的代码吗?我真的爱你的帮助。非常感谢你。 “在Android的初学者” – user2630787

回答

0

您应该使用处理程序,但为了取消超时,您必须从单击监听程序代码中的处理程序中删除延迟的消息。

public class EasyOne extends Activity { 

static private Handler mHandler = new Handler() { 
    @Override 
    public void handleMessage(Message msg) { 
     super.handleMessage(msg); 
     if (msg.what == 123) { 
      ((EasyOne) msg.obj).onTimeout(); 
     } 
    } 
}; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.easyone); 
    a = (Button) findViewById(R.id.btn_ea1); 
    b = (Button) findViewById(R.id.btn_eb1); 
    c = (Button) findViewById(R.id.btn_ec1); 

    Message msg = mHandler.obtainMessage(123,this); 
    mHandler.sendMessageDelayed(msg,5000); 

    a.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Toast.makeText(getApplicationContext(),"CORRECT!", 
        Toast.LENGTH_SHORT).show(); 

      mHandler.removeMessages(123,this); 

      Intent intent = new Intent(getApplicationContext(),EasyTwo.class); 
      startActivity(intent); 

     } 
    }); 
} 

private void onTimeout() { 
    //your code 
} 

}

+0

私人无效onTimeout后(){ – user2630787

+0

我应该编码这是你把代码,应该是在超时被触发时执行。看你的代码,它会是意图intent =新的意图(getApplicationContext(),TimesUp.class); startActivity(intent); –