簡體   English   中英

Android-每隔幾秒鍾更改一次球的顏色

[英]Android - Change color of a ball every few seconds

我還是Android的新手,目前我只是在練習該應用程序,但我苦苦掙扎的問題之一是讓應用程序中的球每隔幾秒鍾就更改一次顏色,例如3或6大約在幾秒鍾的時間里,問題是我使用的代碼起初可以工作,但是幾秒鍾的延遲之后,它又恢復為更改不同的顏色,而無需等待。 上次我沒有提供所需的答案,而且因為它有點像它的基本知識,所以我再次提出這個問題感到很傻,而且可能沒有我想像的那么重要。 會有所幫助嗎?

   protected void onDraw(Canvas canvas) {
 // TODO Auto-generated method stub
        ballBounds.set(ballX-ballRadius, ballY-ballRadius, ballX+ballRadius,ballY+ballRadius);
        Handler handler = new Handler();        
        int rnd = (int)(Math.random() * 4);
        switch(rnd){
        case 0:handler.postDelayed(new Runnable(){
            public void run(){
            paint.setColor(Color.BLUE);
            }
        }, 3000);
            break;
        case 1: handler.postDelayed(new Runnable(){
            public void run(){
            paint.setColor(Color.RED);
            }
        }, 3000);
            break;
        case 2: handler.postDelayed(new Runnable(){
            public void run(){
            paint.setColor(Color.GREEN);
            }
        }, 3000);
            break;
        case 3:handler.postDelayed(new Runnable(){
                public void run(){
                paint.setColor(Color.YELLOW);
                }
            }, 3000);
            break;
            }
        canvas.drawOval(ballBounds, paint);

    update();

    try{
        Thread.sleep(20);
    }catch(InterruptedException e){}

    invalidate();

}

將您的case語句放入1個可運行的語句中,但它需要一個比onDraw()更好的宿主:

protected void onDraw(Canvas canvas) {
        ballBounds.set(ballX - ballRadius, ballY - ballRadius, ballX + ballRadius, ballY + ballRadius);
        Handler handler = new Handler();
        int rnd = (int) (Math.random() * 4);
        handler.postDelayed(new Runnable() {
            public void run() {
                switch (rnd) {
                    case 0:
                        paint.setColor(Color.BLUE);
                        break;

                    case 1:
                        paint.setColor(Color.RED);
                        break;

                    case 2:
                        paint.setColor(Color.GREEN);
                        break;

                    case 3:
                        paint.setColor(Color.YELLOW);
                        break;
                }
            }
        }, 3000);
        canvas.drawOval(ballBounds, paint);
        update();
        try {
            Thread.sleep(20);
        } catch (InterruptedException e) {
        }
        invalidate();
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM