2011-02-17 12 views
1

私は、アクティビティのランダムな位置にランダムな点数を描く必要があるアプリケーションを持っています。それから私はステロイドが好きな方向にそれらのポイントを移動する必要があります。どうやってやるの?下の画像をご覧ください。ランダムな点に円を描く

enter image description here

答えて

2

HAVは、画面の幅と高さでそれを播種ランダムオブジェクトを作成し、

とonTouchevent()のチェックをしたいと多くの時間とそれらの点上の点を描画onDrawメソッドでhttp://www.droidnova.com/playing-with-graphics-in-android-part-iii,176.html

を見てリンクの方法は、これらの点の位置を変更

+0

私のブログを参照していただきありがとうございます:) – WarrenFaith

+0

ええとウォーレンフェイスあなたのブログに本当に助けてくれてありがとう私の側からも多くのおかげで – ingsaurabh

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; 
    } 
} 

ここにから、あなただけのランダムな位置で、小惑星オブジェクトの乱数を作成する必要があり、アプリケーションのメインループにupdatePositionを呼ぶだろう各エンティティのメソッドを描画します。

編集:ああ、各ループサイクルで描画したものを「クリア」することを忘れないでください。そうすれば、すでに描画されたオブジェクトは元の位置に表示されません。 :)