Java 任意位置产卵

Java 任意位置产卵,java,android,Java,Android,我对安卓系统有问题。我在做一个项目,我在一个随机的位置画圆圈。触摸此圆圈后,您将获得分数,圆圈将消失。但我有一个问题,我的对象是繁殖然后消失,没有接触和繁殖在另一个位置。 这是我的产卵器代码 protected void spawner(Canvas canvas,int timer){ System.out.println(myThread.timer); if (myThread.timer>100) { int x = 200 - generator.nextInt(

我对安卓系统有问题。我在做一个项目,我在一个随机的位置画圆圈。触摸此圆圈后,您将获得分数,圆圈将消失。但我有一个问题,我的对象是繁殖然后消失,没有接触和繁殖在另一个位置。 这是我的产卵器代码

protected void spawner(Canvas canvas,int timer){
    System.out.println(myThread.timer);
if (myThread.timer>100) {
    int x = 200 - generator.nextInt() % (myThread.screenDimX / 2);
    int y = 200 - generator.nextInt() % (myThread.screenDimY / 2);
    Paint paint = new Paint();
    paint.setStyle(Paint.Style.FILL);
    paint.setColor(Color.WHITE);
    paint.setColor(Color.parseColor("#800000"));
    canvas.drawCircle(x, y,50, paint);
    myThread.timer=0;
}
}
myThread
是我的游戏循环线程。
有人能帮我吗

总的来说,我可以告诉您一件事,我不知道这是否是您遇到问题的原因,即所有UI组件操作都应该在UI线程上进行,而不是在其他线程上进行。
不清楚您是在计时器线程的回调上调用此方法,还是在UI线程上调用此方法。如果您是从UI线程调用它,那么可能是UI线程和计时器线程同时写入myThread.Timer,而且看起来,您并没有保护它。

您只是为即时myThread.Timer大于100绘制了一个圆圈。您需要做的是将其添加到ArrayList或任何您想要的数据结构中,然后不断循环该ArrayList并绘制所有的圆。

True,我将尝试修复它。此外,您还必须在触摸时保存圆的位置和大小(碰撞检测),以确定要删除的圆。(或者更准确地说,停止绘制)。在这种情况下,您必须在所有画布上绘制一种颜色来清除画布,然后重新绘制所有要保留的圆。