使用UIButtons和CoreAnimation创建温和的随机移动

时间:2012-11-24 13:21:54

标签: objective-c ios uiview core-animation uitouch

我正在尝试在iPhone上创建一个带有UIButtons集合的动画,每个UIButtons都应该在UIView中慢慢地随机移动,互相弹跳。我意识到这是一个非常开放的问题,所以我只是想为这样的效果找一个更好的名字,以便我可以做一些搜索。脉动似乎是合乎逻辑的,但大多数搜索会因此而定期进出。

我的想法几乎就像是一个“在显微镜下”的细胞视图,它们各自都是自己动起来的,当它们相互撞击时弹跳,或者放入大量弹珠的效果在盒子里。我最终想要实现用户“轻弹”它们,但是那会是稍后的。

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

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

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

但你可能也想看看植绒或蜂拥而至的行为,这不是你要问的,但它可能在视觉上很有趣。

答案 2 :(得分:0)

你想让你的按钮以随机选择的直线移动,直到碰到某些东西,或者你想让它们蜿蜒吗?

我不知道你要做什么的任何例子,但我可以推荐一些事情来研究。

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

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

我在Github上有一个示例应用程序,用于说明沿曲线路径设置动画的动画,还显示了如何使用CALayer hitTest方法在动画制作时检测图像视图中的点按。

您可以通过 clicking here 访问Github项目。

相关问题