1

そのため、単純なヘビとはしごのゲームを実行するアクティビティがあり、プレーヤーがボタンをクリックして移動できるようにしたいと考えています。その後、コンピューターが移動します。私の問題は、プレーヤーが移動すると、コンピューターがすぐに移動することです。

代わりに、コンピューターが移動する前にアクティビティを待機させたいのです。いろいろ調べたところ、待機にはスレッドの使用が含まれていることがわかりましたが、アプリがクラッシュすることなく実装できませんでした

スレッドを宣言する私の試み:

final Runnable runnable = new Runnable()  {
        @Override
        public void run()
        {
            while (true)
            {

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

        }
    };

    Thread thread= new Thread(runnable);

ボタンの onClick() メソッド:

Button rollButton = (Button) (findViewById(R.id.rollButton));
    rollButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            //executes only if current player is a human
            if(GAME_BOARD.getCurrentPlayer().isHuman()) {

                GAME_BOARD.rollDie(); // rolls the die
                showDie(GAME_BOARD); // displays die on screen      
                GAME_BOARD.move();  // moves the player and sets next player as current player
                playerTurn.setText(GAME_BOARD.getCurrentPlayer().getName() +"'s turn");// sets TextView to display who's player's turn it is
                thread.start();  

                if(!GAME_BOARD.getCurrentPlayer().isHuman()) {

                    GAME_BOARD.rollDie();
                    showDie(GAME_BOARD);
                    GAME_BOARD.move();
                    playerTurn.setText(GAME_BOARD.getCurrentPlayer().getName() +"'s turn");                 
                }   
            }

        }
    });

繰り返しになりますが、私の質問は、2 番目の if ステートメントが実行される前に、アクティビティが待機するようにするにはどうすればよいでしょうか (たとえば 4 秒)。

4

4 に答える 4

3

を使用できますHandler.postDeleayed。実行するRunnableとミリ秒単位の遅延期間を提供する必要があります。はRunnableUI スレッドで実行されます

于 2013-07-04T08:27:43.013 に答える
0

以下を試してください。

rollButton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Runnable runnable = new Runnable() {
            @Override
            public void run() {
                // whatever you would like to implement when or after clicking rollButton
            }
        };
        rollButton.postDelayed(runnable, 5000); //Delay for 5 seconds to show the result
}
于 2014-02-08T07:47:25.717 に答える