[英]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.