2011-02-17 62 views
1

我有一個應用程序,我需要在活動的隨機位置,以畫點的隨機數畫圓。那麼我需要像任何類固醇一樣在任何方向移動這些點。我怎樣才能做到這一點?請看下面的圖片。隨機點

enter image description here

回答

2

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

在的onDraw方法創建一個隨機的對象與寬度和屏幕的高度播種,並在這些點畫點儘可能多的時間,只要你想

和的onTouchEvent()檢查在鏈接中的方法改變這些點的位置

+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併爲每個實體繪製方法。

編輯:哦,不要忘了「清楚」你在每個循環週期已經開什麼,所以你不會看到他們原來的位置已經繪製的對象。 :)