0

我正在尝试使用一组 UIButton 在 iPhone 上创建一个动画,每个 UIButton 都应该在 UIView 内缓慢而随机地移动,并相互反弹。我意识到这是一个非常开放的问题,所以我只是为这种效果寻找一个更好的名称,以便我可以进行一些搜索。脉动似乎是合乎逻辑的,但大多数搜索都会因此而定期进出。

我想的几乎就像细胞的“显微镜下”视图,它们各自独立地自行移动,当它们相互撞击时会反弹,或者将很多弹珠放在一个盒子里的效果. 我最终会想要实现用户“轻弹”它们,但这将在稍后进行。

关于从哪里开始寻找的任何想法?提前致谢!

4

3 回答 3

2

我会研究一些 2D 物理引擎,如ChipmunkBox2D ,因为它们会自行提供碰撞检测和适当的反应。然后,您可以将您UIButtons的简单刚体建模为具有非常低的初始速度。为按钮设置动画就像在每次绘制时手动移动它们一样简单。

于 2012-11-24T15:12:32.600 回答
0

我首先在布朗运动上搜索,它可能比显微镜下的细胞更随机,因为细胞至少在理论上可以有一些目的和方向。

但是您可能还想查看成群结队或蜂拥而至的行为,这不是您要问的,但它可能在视觉上很有趣。

于 2012-11-24T14:59:48.307 回答
0

你想让你的按钮沿着随机选择的直线移动直到它们撞到什么东西,还是你想让它们蜿蜒曲折?

我不知道您正在尝试做什么的任何示例,但我可以推荐一些要研究的东西。

您可以预先生成 CGPath,然后使用 CAKeyframeAnimation 对象沿路径为按钮设置动画。

检测碰撞以使它们相互反弹是很棘手的。你必须询问视图层的presentationLayer。您可以获取每个按钮的presentationLayer 框架并检查相交,或者使用hitTest 方法检查每个框架的角以查看它们是否落在另一个按钮的框架内。

我在 Github 上有一个示例应用程序,它说明了沿曲线路径为视图设置动画,它还展示了如何使用 CALayer hitTest 方法在图像视图动画时检测点击。

您可以通过单击此处访问Github 项目。

于 2012-11-24T15:22:24.193 回答