【问题标题】:How to draw objects on canvas randomly如何在画布上随机绘制对象
【发布时间】:2016-05-06 17:19:44
【问题描述】:

我有 5 个对象在 SurfaceView 中经过一段时间后随机创建,
我像这样在 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);

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

【问题讨论】:

    标签: java android android-studio android-canvas surfaceview


    【解决方案1】:

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

    【讨论】:

    • 谢谢,你给了我一个好主意:D
    【解决方案2】:

    我认为是因为 Draw 方法按行的顺序绘制对象,例如:

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

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

    是要绘制的对象

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

    【讨论】:

      猜你喜欢
      • 2020-05-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-14
      • 1970-01-01
      • 2011-01-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多