2013-06-03 76 views
0

我正在使用一個計時器來動畫化一個對象以恆定速度移動。製作一個以恆定速度移動的對象

這裏是我的代碼:

Class class1 = new Class(); 
    public int x; 
    public int y; 

    public Form1() 
    { 
     InitializeComponent(); 
    } 

    protected override void OnPaint(PaintEventArgs e) 
    {  
     Graphics g = e.Graphics; 
     class1.Draw(g); 
    } 
private void timer1_Tick(object sender, EventArgs e) 
    { 
     x += 1; 
     class1.Move(x/2, x/2); 
     Invalidate(); 

    } 

類:

class Class 
{ 
    private int x; 
    private int y; 

    public void Draw(Graphics g) 
    { 
     SolidBrush Brush = new SolidBrush(Color.White); 
     g.FillRectangle(Brush, x, y, 10, 10); 
    } 

    public void Move(int X, int Y) 
    { 
     x = x + X/3; 
     y = y + Y/3; 
    } 
} 

廣場正在加快,如何讓它以恆定速度行駛的任何想法?

+0

選擇一些更好的名字,問題將變得更加清晰。 'x'是一個位置,'dx'是一個速度。 '移動(x/2,x/2);'看起來像加速遠離原點。 –

+0

這是一個Windows窗體應用程序嗎? –

回答

3

您每次增加「x」,然後將其用作移動的增量。註釋掉:

// x += 1; 
class1.Move(x/2, x/2); 

您還需要爲此指定一個默認的「x」。

+0

糾正我,如果我錯了,但廣場只是靜態與此代碼? – Frostbite

+0

@ user2432378如果您在開始時將x設置爲非零值,則不適用。 「移動」方法遞增:'x = x + X/3;' –

+0

謝謝!很多appriciated – Frostbite

相關問題