2015-05-30 12 views
-1

你好,我有一个应用程序,其中有圆形浮动。目前不会浮动,这是问题所在。我希望他们慢慢地随意走动。我怎样才能做到这一点? 这里是我的圈子里等级:Java如何让一个圈子慢慢地移动?

public class data { 

    public int x,y, size,id; 

    public data(int x,int y){ 
     this.x = x; 
     this.y = y; 
     size = new Random().nextInt(50); 
     id = new Random().nextInt(10); 

    } 

    public void tick(){ 
    } 

    public void render(Graphics g){ 
     g.setColor(new Color(38,127,0)); 
     g.fillOval(x, y, size, size); 
     g.setColor(Color.black); 
     g.drawOval(x, y, size, size); 

    } 
} 
+0

http://stackoverflow.com/search?q=[java]+[swing]+move – Tom

回答

0

您可以通过添加一个随机值x和为y每一个刻度有一个很随意的动作:

private Random random = new Random(); 

public void tick() { 
    x = x + random.nextFloat(); 
    y = y + random.nextFloat(); 
} 

这将导致一个非常模糊的运动。

另一种选择是有2个变量:motionX和motionY。这些被添加到x和y的每一个刻度,之后就加入的MotionX和motionY随机值:

private Random random = new Random(); 
private float xMotion = 0f, yMotion = 0f; 
private float factor = 0.5f; //just a value to reduce speed 

private void tick() { 
    x = x + xMotion; 
    y = y + yMotion; 
    xMotion = xMotion + random.nextFloat() * factor; 
    yMotion = yMotion + random.nextFloat() * factor; 
} 
0

首先,我想你搞砸了哪一个,你应该是随机的,你随机选择一个大小和编号(这是什么?),而不是x,y值。另外,我不知道为什么,但看起来渲染程序必须被调用paint。