是否可以在屏幕外生成一系列对象,然后使这些对象向内移动?我正在创建一个带有圆圈的活壁纸,这些圆圈从屏幕外部开始,然后向内移动并从墙壁反弹。我创建了一个插图来更好地描述我的意思:
我面临的两个问题是:
我怎样才能做到这一点?
答案 0 :(得分:1)
这个问题的一个解决方案是创建一个包含以下属性的类:
然后你可以用坐标创建对象:
和/或
并给它们适当的速度(因此它们朝屏幕边界移动)。
在每一步中你都会:
对象坐标的偏移量取决于每两次重绘之间的时间步长。它取决于您如何评估它。
在对象到达屏幕边界之前,它将被绘制到屏幕外部并且不可见。
要在画布上绘制对象,您可以扩展View类(或SurfaceView - 讨论这两者之间的差异here)并覆盖onDraw()方法。您可以关注this tutorial或自己寻找另一个(有很多)。
如果一个物体从其内部到达屏幕边界(即当它的X在范围[0,screenWidth]中并且其Y在范围[0,screenHeight]中)时,你可以否定它的速度(在X或Y方向,取决于已到达的边界)所以它会向另一个方向移动(例如与墙壁的弹性碰撞)。
您可以调整speedX和speedY的最小值和最大值,以查看哪种效果最令人满意。