有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何在画布上随机绘制对象

在SurfaceView中,我有5个在一定时间后随机创建的对象,
我用这样的画法画它们:

bby.draw(canvas);
hyd.draw(canvas);
hole.draw(canvas);

我的问题是,对象不会随机绘制
例如:如果hyd是在bby之前创建的,它将不会绘制,直到bby被创建并绘制,并且与其他人一样
我认为是因为Draw方法按线条的顺序绘制对象,比如:

1 bby.draw(canvas);
2 hyd.draw(canvas);
3 hole.draw(canvas);

但我不想那样
我该怎么解决这个问题?(希望你明白我的意思)


共 (2) 个答案

  1. # 1 楼答案

    I think is because the Draw method draw objects in order of the lines like :

    这是因为只有在调用draw方法时,您定义的每个对象才会在画布中绘制。。。但这不会异步发生,即。 按此顺序:

    bby.draw(canvas);
    hyd.draw(canvas);
    hole.draw(canvas);
    

    就是要绘制的对象

    你可以在a和b之间生成一个随机数,并根据这个数改变抽签顺序

  2. # 2 楼答案

    如果将可绘制对象放入列表中,则可以访问随机索引以创建随机行为。List的remove方法使每次只绘制一次变得很容易

    Random rand = new Random();
    ArrayList<Draw> list = new ArrayList<Draw>();
    // Add your elements here
    while (!list.isEmpty()) {
        // Gets a random index in the range of the list, then removes and returns it.
        Draw elem = list.remove(rand.nextInt(list.size()));
        // Do your drawing with your random Draw elem here
    }