如何在 canvas 上随机绘制对象

How to draw objects on canvas randomly

我在 SurfaceView 中有 5 个在特定时间后随机创建的对象,
我像这样在 Draw 方法上绘制它们:

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);

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

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

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

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

是要绘制的对象

您可以在a和b之间生成一个随机数,并根据该数字更改抽奖顺序...

如果将可绘制对象放在列表中,则可以访问随机索引以创建随机行为。 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
}