我有一个应用程序,我需要在活动的随机位置绘制随机数点。然后我需要将这些点向任何方向移动,就像类固醇一样。我怎样才能做到这一点?请看下面的图片。
答案 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()检查链接中的方法改变这些点的位置