在Android中创建游戏重力?

在Android中创建游戏重力?,android,eclipse,gravity,Android,Eclipse,Gravity,我试图在Android中创建游戏重力。我创建了一个更新方法、一个显示和重力。现在应用程序不会强制关闭,但球不会移动。是否需要为.GetHight()和.getWidth()方法使用画布 我认为您只绘制了一次,您可以添加一个计时器来触发draw()方法。在我看来,您的方法完全错误,正在造成复杂性 我会这样做的。创建两个类,一个用于球,另一个用于在某处绘制球。大致如下: public class Ball{ private int radius; private int xPosi

我试图在Android中创建游戏重力。我创建了一个更新方法、一个显示和重力。现在应用程序不会强制关闭,但球不会移动。是否需要为.GetHight()和.getWidth()方法使用画布


我认为您只绘制了一次,您可以添加一个计时器来触发draw()方法。在我看来,您的方法完全错误,正在造成复杂性

我会这样做的。创建两个类,一个用于球,另一个用于在某处绘制球。大致如下:

public class Ball{

    private int radius;
    private int xPosition;
    private int yPosition;
    private int color;
    private Paint paint;

    public Ball(int x, int y, int radius, int color)
    { 
        this.xPosition = x; this.yPosition = y; this.radius = radius;
        paint = new Paint(color);
    }

    void moveBall(int x, int y){
         xPosition = x; yPosition =y;        
    } 

    void onDraw(Canvas canvas){
          canvas.drawCircle(x, y, radius, paint);
    }              

}
现在找个地方画

public class Playground extends ImageView{

       public Ball ball;    

       @Override
       public void onDraw(Canvas canvas)
       {
           super.onDraw(canvas);
           if (ball != null ){
               ball.onDraw(canvas);
           }
       }

 }
在您的活动中,可能在onStart()中:

将“update”方法也移动到ball类中,并在计时器上调用ball.update()(或在需要更新时调用)

将布局中的ImageView替换为游乐场类(突然出现在我脑海中的名字)

覆盖ImageView扩展中的onMeasure(),以获取“游乐场”的高度和宽度

这给了你基本的东西。我把这个写在了头上,所以请原谅我的打字错误等


此外,请回顾您在之前关于此主题的多个问题中给出的答案,并阅读有关扩展视图类onDraw和onMeasure的Android文档。

谢谢,如何添加计时器?以下是一些信息:如果您查看代码,球将始终画在相同的位置。添加一个计时器除了使球在同一个地方被多次吸引之外,什么也做不了。虽然OP在某些时候需要一个计时器,但这并不能解决这个问题。谢谢!不过,我有几个问题:我在Ball类中创建了ImageView,当我放置ImageView.Ball时。。。它说“球不能被解析或者不是场”同样,我如何用游乐场类替换Imageview?我真的很感谢你的帮助,乔丹。我以为你已经离开一段时间了,阅读一些教程,学习面向对象编程。似乎不是;)你为什么在舞会上放一个ImageView?我的示例没有显示这一点,ball类应该在不了解ImageView的情况下存在。若要使用自定义的ImageView,请在布局XML中将ImageView替换为com.package.whatever.playerd。但是,请在这里或谷歌搜索如何做到这一点。哈哈,对不起,但当人们把代码和实际单词混在一起时,我很难理解该怎么做:)所以我有点困惑。我现在就试试,谢谢祝你好运。看看代码有多干净?您有一个ball类,从中可以创建任意数量的球。每个球都会自己照顾自己,在你的“操场”上,你可以让每个球自己画。将来,你可以把它改成鸟类、三角形类或飞行烤面包机类,然后创造你想要的任何东西。我似乎最喜欢操场类;)到目前为止,我一直在研究如何在xml中更改ImageView,一切都与ImageView按钮有关?这就是我想用的,还是我把它和别的东西混在一起了?
public class Ball{

    private int radius;
    private int xPosition;
    private int yPosition;
    private int color;
    private Paint paint;

    public Ball(int x, int y, int radius, int color)
    { 
        this.xPosition = x; this.yPosition = y; this.radius = radius;
        paint = new Paint(color);
    }

    void moveBall(int x, int y){
         xPosition = x; yPosition =y;        
    } 

    void onDraw(Canvas canvas){
          canvas.drawCircle(x, y, radius, paint);
    }              

}
public class Playground extends ImageView{

       public Ball ball;    

       @Override
       public void onDraw(Canvas canvas)
       {
           super.onDraw(canvas);
           if (ball != null ){
               ball.onDraw(canvas);
           }
       }

 }
imageView.ball = new Ball(startX, startY, radius, Color.BLUE);