[英]How to loop through array and do action if two things match
經過數小時的研究,如何在此處更改生成數字的顏色
for (int rolls = 0; rolls < 4 +temp; rolls++) {
value = (int) (Math.random() * 4 + 1);
//Test if numbers generated are correct
builder.append(value + " ");
textTest.setText(builder.toString());
NumbersArray[rolls] = value;
System.out.println(NumbersArray[rolls]);
我設法做到了,現在,我遇到了一個問題,他們所有人都同時改變顏色,我該怎么做,以便第一個生成的數字先亮起,等待幾秒鍾,然后下一個生成的數字就變色? 也許我正在解決這個錯誤,因為即使未生成該顏色,所有顏色也會更改
if (rolls == 1) {
red.setBackgroundColor(Color.parseColor("#FF0000"));
//Wait t amount of time here
red.postDelayed(new Runnable() {
public void run() {
red.setBackgroundColor(Color.parseColor("#FF7D0000")); /* Changes Color */
}
},3*100 /* millisecond to wait */);
}
else if (rolls == 2) {
yellow.setBackgroundColor(Color.parseColor("#FFF000"));
yellow.postDelayed(new Runnable() {
public void run() {
yellow.setBackgroundColor(Color.parseColor("#FF7F7500"));
}
}, 3 * 100);
}
else if (rolls == 3) {
green.setBackgroundColor(Color.parseColor("#0FFF00"));
green.postDelayed(new Runnable() {
public void run() {
green.setBackgroundColor(Color.parseColor("#FF087D00"));
}
}, 3 * 100 );
}
else {
blue.setBackgroundColor(Color.parseColor("#0000FF"));
blue.postDelayed(new Runnable() {
public void run() {
blue.setBackgroundColor(Color.parseColor("#FF00007D"));
}
}, 3 * 100 );
}
整個for循環:
for (int rolls = 0; rolls < 2 +temp; rolls++) {
value = (int) (Math.random() * 4 + 1);
builder.append(value + " ");
textTest.setText(builder.toString());
NumbersArray[rolls] = value;
System.out.println(NumbersArray[rolls]);
if (value == 1) {
red.setBackgroundColor(Color.parseColor("#FF0000"));
red.postDelayed(new Runnable() {
public void run() {
red.setBackgroundColor(Color.parseColor("#FF7D0000"));
}
},3000);
}
else if (value == 2) {
yellow.setBackgroundColor(Color.parseColor("#FFF000"));
yellow.postDelayed(new Runnable() {
public void run() {
yellow.setBackgroundColor(Color.parseColor("#FF7F7500"));
}
}, 3000);
}
else if (value == 3) {
green.setBackgroundColor(Color.parseColor("#0FFF00"));
green.postDelayed(new Runnable() {
public void run() {
green.setBackgroundColor(Color.parseColor("#FF087D00"));
}
}, 3000 );
}
else {
blue.setBackgroundColor(Color.parseColor("#0000FF"));
blue.postDelayed(new Runnable() {
public void run() {
blue.setBackgroundColor(Color.parseColor("#FF00007D"));
}
}, 3000 );
}
您可以嘗試使用此代碼來暫停內容更新和檢查條件的時間,此處處理程序將在沒有任何時間延遲的情況下首次運行可運行程序,之后將花費1000毫秒的時間來更新內容,並且像循環一樣運行。
final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
if (rolls < 2 + temp) {
rolls++;
//Do your stuff here
handler.postDelayed(this, 1000);
}
}
}, 0);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.