最初は6つのボタンにいくつかの数字が表示される、一種の記憶ゲームアプリを開発しています。次に、以下の MyCount5sec とハンドラーが動作すると、ユーザーが記憶するまで 5 秒間待機した後、ハンドラーは txtClearRun を呼び出し、すべてのボタンのすべてのテキストが消去されます。
5 秒の待機期間の後、テスト期間が来ます。ユーザーは順番にボタンを選択する必要があります。後者のボタンの値は、前のボタンの値よりも大きくする必要があります。
ユーザーが成功した場合 (つまり、6 つの数字ボタンをすべて押した場合)、アプリは postDelay? に従って 1.5 秒待機する必要があります。それでも遅れはないようです。
ユーザーが間違っている場合、つまり。前の値よりも小さい値でボタンが押された場合、ユーザーは失敗し、アプリも 1.5 秒待機し、ボタンが赤で強調表示されます。しかし、1.5秒の遅延もないようです。どちらも赤でハイライトされていません。
質問
- 遅延がないように見えるのはなぜですか? 2 つのハンドラーを同時に呼び出すことはできませんか?
- どうすればそれをさらに変更できますか?
どうもありがとう!!
private void setQup()
{
.....
MyCount5sec counter5sec = new MyCount5sec(6000,1000);
counter5sec.start();
handler.postDelayed(txtClearRun, 6000);
pressed = 0;
temp = 0;
final int txtClearRun1time = 1500; // set here!
button_space1.setText("reset press "+pressed);
Button11.setOnClickListener(new OnClickListener() {@Override
public void onClick(View v) {vibrate(); int i=0; Button11.setEnabled(false);
if (i == B0) {puttobutton(B0,0);} if (i == B1) {puttobutton(B1,1);} if (i == B2) {puttobutton(B2,2);}
if (i == B3) {puttobutton(B3,3);} if (i == B4) {puttobutton(B4,4);} if (i == B5) {puttobutton(B5,5);}
pressed = pressed + 1;
int buttonvalue = Integer.parseInt(Button11.getText().toString());
if (pressed >5)
{
TotalScores=TotalScores+20;
handler1.postDelayed(txtClearRun1, txtClearRun1time);
loadNextQup();
}
if (buttonvalue < temp)
{
Button11.setBackgroundResource(R.drawable.red_btn);
TotalScores=TotalScores-10;
handler1.postDelayed(txtClearRun1, txtClearRun1time);
loadNextQup();
}
temp = buttonvalue;
}});
......same for other buttons..
}
Runnable txtClearRun = new Runnable()
{
public void run() {blankbutton();} //remove text on buttons
};
Runnable txtClearRun1 = new Runnable()
{
public void run() {} // solely for wish to delay operations
};
private void loadNextQup()
{
if (TerminateOrNot ==0)
{
handler.removeCallbacks(txtClearRun);
handler1.removeCallbacks(txtClearRun1);
setQup();
}
....
}