如何在 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
}
我在 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
}