簡體   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