到目前为止,我的问题很难解决。
我应该和我的同事一起开发一个Android应用程序,在iOS上做同样的事情。
在开发结束时,我们应该提供两个功能相同、外观相似的应用程序(请放心,没有什么能像安卓系统上强制使用的iOS指南,反之亦然),以便体验相同且身临其境。
最重要的功能之一是一个白色空圆圈的动画,它在圆圈内发射出雪状粒子。圆可以通过滚动或简单的反弹/滑动动画来移动。
想象一个有白色边界的圆圈,白色粒子从白色薄膜上脱落。所有这些粒子都被吸引到中心,它们的速度基础在变化(但没有加速度!)。假设最快的粒子在到达中心之前"死亡"。当然,可以通过寿命和速度设置轻松设置。
我的伴侣和我一样是大三学生,她正在使用iOS的CAEmitterLayer,她在一两天内获得的结果非常棒,非常接近我们应该达到的目标。
就我而言,我真的很挣扎。和她一样,我在任何动画和UI/UX方面都没有任何经验。在Android上寻找粒子生成器/发射器时,我偶然发现了这个好看的库:https://github.com/plattysoft/Leonids它似乎能提供我想要的东西。
但我在使用这个库时有一些未解决的问题:
- 我不能或不知道我是否可以将发射器放置在圆圈内
- 我相信,如果发射器所在的圆正在移动(滚动/动画),粒子很有可能不会随圆移动
正如我所说,我的iOS同事解决了这些问题。甚至是移动的部分:我们正在和经理交谈,经理告诉我们"如果转盘移动怎么办?"她立即在我们面前尝试了一下。我惊呆了。。。
她告诉我,我应该寻找一种方法来将我的粒子包含在容器中(这很有意义^^),并且我的圆视图应该用层剪裁,这样粒子就不会离开圆,尤其是在整个东西都在移动的情况下。
这就是我之所以能做到这一点,要归功于前面提到的Android库:
- 我可以发射粒子,定义它们的形状、比例/大小、速度和发射角度
- 我可以将粒子发射器连接到视图。它将使用X&Y坐标来发射粒子,但像这里这样基于XML的可绘制圆的问题是它包含在基于正方形的视图(具有
height
和width
)中,出于奇怪的原因,我的圆被绘制在所述基于正方形的视图之上
我希望我能找到另一个图书馆,但如果目前的图书馆有效,为什么不呢?只是在那里碰碰运气^^
谢谢你的帮助!
Leonids的库作者提出了一个建议,可能会帮助您达到预期效果:
(来源)
plattysoft评论于2016年9月19日
有趣的是,这目前还不支持,但你可以制作fork并调整库添加一个初始值设定项,该项获取半径并在周围生成粒子以一个随机的角度
第二部分是被中心吸引。这应该是一个修饰符或初始化器,其中加速度取决于角
技巧,不直接支持,但可行。