繁体   English   中英

减慢颜色序列代码

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM