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