在屏幕外生成对象然后将它们移动到中心?

时间:2014-11-17 08:56:30

标签: android android-canvas

是否可以在屏幕外生成一系列对象,然后使这些对象向内移动?我正在创建一个带有圆圈的活壁纸,这些圆圈从屏幕外部开始,然后向内移动并从墙壁反弹。我创建了一个插图来更好地描述我的意思: enter image description here

我面临的两个问题是:

  • 在屏幕外生成对象
  • 让它们向内移动然后从边缘反弹

我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:1)

这个问题的一个解决方案是创建一个包含以下属性的类:

  • X和Y协调(可能是Point
  • speedX
  • 迅速

然后你可以用坐标创建对象:

  • (X <0)或(X&gt; screenWidth)

和/或

  • (Y <0)或(Y&gt; screenHeight)

并给它们适当的速度(因此它们朝屏幕边界移动)。

在每一步中你都会:

  • 更新每个对象的坐标,将其移动到与其当前速度相对应的适当方向
  • 重绘画布上的所有对象

对象坐标的偏移量取决于每两次重绘之间的时间步长。它取决于您如何评估它。

在对象到达屏幕边界之前,它将被绘制到屏幕外部并且不可见。

要在画布上绘制对象,您可以扩展View类(或SurfaceView - 讨论这两者之间的差异here)并覆盖onDraw()方法。您可以关注this tutorial或自己寻找另一个(有很多)。

如果一个物体从其内部到达屏幕边界(即当它的X在范围[0,screenWidth]中并且其Y在范围[0,screenHeight]中)时,你可以否定它的速度(在X或Y方向,取决于已到达的边界)所以它会向另一个方向移动(例如与墙壁的弹性碰撞)。

您可以调整speedX和speedY的最小值和最大值,以查看哪种效果最令人满意。