onDraw和ontouchEvent方法

时间:2017-12-07 02:14:50

标签: android

public class AI extends AppCompatActivity {
    public static Game gameAI = new Game();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        DrawGameAI view = new DrawGameAI(this);
        setContentView(view);
    }
}
class DrawGameAI extends View {

    public DrawGameAI(Context context){
        super(context);
    }

    protected void onDraw(Canvas canvas){
        ....
    }

    public boolean onTouchEvent(MotionEvent e){
            if(gameAI.getBlackTurn() == true) {
                gameAI.move((int) ((xPos - 7.0 / 1080.0 * width) / gridSize), (int) ((yPos - 7.0 / 1080.0 * width) / gridSize));
                invalidate();
                break;
            }

            else if(gameAI.getBlackTurn() == false){
                    gameAI.AI();
                    invalidate();
                    break;
                }
            }
            return true;
        }
    }
}

我的想法是我是黑人,AI是白人。每次我点击我的板子,它都会在位置上画一块黑色的东西。然后我希望我的AI能够自动响应。 (当AI转动时,gameAI.AI()将在棋盘上放一块,gameAI.move()将转动转弯并将我的黑棋子放在棋盘上) 我的问题是每次我必须在AI转动时点击屏幕,这会触发ontouchEvent以使其绘制。 我尝试将if(gameAI.getBlackTurn()== false)更改为if(gameAI.getBlackTurn()== false),这样,在第一个if语句之后,轮到我完成并且程序将执行第二个if语句,看起来像

if(gameAI.getBlackTurn() == true) {
    gameAI.move((int) ((xPos - 7.0 / 1080.0 * width) / gridSize), (int) 
    ((yPos - 7.0 / 1080.0 * width) / gridSize));

}

if(gameAI.getBlackTurn() == false){
    gameAI.AI();           
}
invalidate();
break;

这一次,在每个ontouchEvent之后,棋盘上有两块,然后onDraw将被调用并同时绘制我的棋子和AI棋子。 但是,我的AI真的很慢。我必须等待一段时间才能同时绘制两件。 因此,我想要的是在轮到我之后,立即在板上涂上黑色片,然后在AI转动时我不必触摸屏幕,在AI移动后,将AI片涂在板上。

我该怎么做?谢谢!

0 个答案:

没有答案