在随机点绘制圆圈

时间:2011-02-17 11:17:11

标签: android

我有一个应用程序,我需要在活动的随机位置绘制随机数点。然后我需要将这些点向任何方向移动,就像类固醇一样。我怎样才能做到这一点?请看下面的图片。

enter image description here

2 个答案:

答案 0 :(得分:4)

好吧,如果我理解正确,你希望为你的应用制作一些“小行星”。

这不是特定于Android,但您可能需要在应用程序中将小行星定义为实体,当您需要小行星时,您只需创建一个随机位置的随机数(您可能希望检查是否存在)已经是该位置的小行星或其他物体以避免碰撞。)

除此之外,您只需要为每个小行星提供一个速度(在2D平面中,X和Y速度),并在应用程序进行过程中相应地在循环中更新。

这是一个简单的例子,但这里有:

//To make things easier, let's assume you have an Entity class, from which every game object is inherited
public abstract class Entity {

   // Fields used to know object position
   private float x;
   private float y;

   // Fields used to calculate object motion
   private float x_speed;
   private float y_speed;

   ...

   // You would probably have a generic method to draw every entity - details are not relevant to your question, but you should draw the object taking it's x and y coordinates into account here
   public void draw() { ... }

   // Generic function to update the object's position regarding its speed
   public void updatePosition() {
      this.x += this.x_speed;
      this.y += this.y_speed;
   }

  ...

}

//Let's say you have an Asteroid class, which represents each asteroid

public class Asteroid extends Entity {

   // Just add a constructor to set it's initial position and speed
   public Asteroid(float initial_x, float initial_y, float ini_x_speed, float ini_y_speed) {
      this.x = initial_x;
      this.y = initial_y;
      this.x_speed = ini_x_speed;
      this.y_speed = ini_y_speed;
   }
}

从这里开始,你只需创建一个随机数量的Asteroid对象,随机位置并在你的应用程序的主循环上调用updatePosition并为每个实体绘制方法。

编辑:哦,不要忘记“清除”你在每个循环周期中绘制的内容,这样你就不会在旧位置看到已绘制的对象。 :)

答案 1 :(得分:2)

Hav看http://www.droidnova.com/playing-with-graphics-in-android-part-iii,176.html

在onDraw方法中创建一个随机对象,用屏幕的宽度和高度对其进行播种,并在这些点上绘制点数,然后随时抽出

onTouchevent()检查链接中的方法改变这些点的位置