[英]Slow down colour sequence code
我目前正在創建一個顯示隨機顏色序列的記憶游戲,您必須將它們轉發回來。 它開始顯示 2,然后在你做對時增加。 我正在使用會改變顏色的按鈕,但我的問題是它們的變化太快了。 我嘗試過事件處理程序,但它並沒有減慢屏幕上閃爍的顏色。 我需要一些延遲。 這是根據我的數組中放置的隨機按鈕 id 來點亮按鈕的代碼。
public void PlaySequence()
{
for(int i = 0; i< yourList.size();i++)
{
switch(Integer.parseInt(yourList.get(i).toString())) {
case 0:
redButton.setBackgroundColor(Color.RED);
revertButtonColour(0);
break;
case 1:
blueButton.setBackgroundColor(Color.BLUE);
revertButtonColour(1);
break;
case 2:
greenButton.setBackgroundColor(Color.GREEN);
revertButtonColour(2);
break;
case 3:
yellowButton.setBackgroundColor(Color.YELLOW);
revertButtonColour(3);
break;
}
}
編輯:
我嘗試添加事件處理程序,但它們似乎不起作用
public void revertButtonColour(int number)
{
int slowThisDown = 0;
while(slowThisDown < 5000)
slowThisDown++;
switch(number)
{
case 0:
Handler redHandler = new Handler();
redHandler.postDelayed(new Runnable() {
public void run() {
redButton.setBackgroundResource(android.R.drawable.btn_default);
}
}, sequenceSpeed);
break;
case 1:
Handler blueHandler = new Handler();
blueHandler.postDelayed(new Runnable() { public void run() {
blueButton.setBackgroundResource(android.R.drawable.btn_default);}}, sequenceSpeed);
break;
case 2:
Handler greenHandler = new Handler();
greenHandler.postDelayed(new Runnable() { public void run() {
greenButton.setBackgroundResource(android.R.drawable.btn_default);}}, sequenceSpeed);
break;
case 3:
Handler yellowHandler = new Handler();
yellowHandler.postDelayed(new Runnable() { public void run() {
yellowButton.setBackgroundResource(android.R.drawable.btn_default);}}, sequenceSpeed);
break;
}
}
你可以添加一個電話到
Thread.Sleep (time_between_changes)
但這會弄亂 UI 線程。 帶有計時器的事件處理程序可能是要走的路。
編輯:
查找 Timer 類並在回調中,向 UI 線程發送一條消息,告訴它要更改哪個按鈕。 下面是如何讓 UI 顯示您想要的內容。
public void PlaySequence()
{
for(int i = 0; i< yourList.size();i++)
{
switch(Integer.parseInt(yourList.get(i).toString())) {
case 0:
redButton.setBackgroundColor(Color.RED);
Thread.Sleep (2000);
redButton.setBackgroundResource(android.R.drawable.btn_default);
break;
case 1:
blueButton.setBackgroundColor(Color.BLUE);
Thread.Sleep (2000);
blueButton.setBackgroundResource(android.R.drawable.btn_default);
break;
case 2:
greenButton.setBackgroundColor(Color.GREEN);
Thread.Sleep (2000);
greenButton.setBackgroundResource(android.R.drawable.btn_default);
break;
case 3:
yellowButton.setBackgroundColor(Color.YELLOW);
Thread.Sleep (2000);
yellowButton.setBackgroundResource(android.R.drawable.btn_default);
break;
}
Thread.Sleep (500);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.