最新公告
  • 欢迎您光临AA分享网,一个高级程序员的学习、分享的分享平台!立即加入我们
  • 高度自定义的粒子喷发效果-Confetti

    原文地址:It’s parfetti time! 

    It’s parfetti time!

    实际名称是Confetti,但是的一个朋友认为parfetti是一个更好的名字。

    1--S4w07nyb-r6QV7GBR_cfg.gif

    在紧张开发Robinhood Gold之余,由于要等待设计等最终定稿,所以我有时间去弄我将用在Robinhood的第二个开源项目。今天很高兴宣布发布出来给大家试试。

    额, 它是什么东西呢?

    Confetti是一个可以在任何时候任何地方随机发射纸屑的粒子系统库。可以轻松自定义,非常强大。比如,你可以指定随机发射的源(圆点或者线),物理约束(速度,加速度以及旋转等),以及对纸片(Confetto)(是的,就是这个单词,它是confetti的单数形式 )的任何实现。然后这个library将在屏幕上显示你指定的纸屑发射效果。

    这里是爆炸效果的配置案例:

    new ConfettiManager(context, generator, confettiSource, container)
            .setTTL(1000) 
            .setBound(explosionBound)
            .setVelocityX(0, defaultVelocityFast)
            .setVelocityY(0, defaultVelocityFast) 
            .enableFadeOut(Utils.getDefaultAlphaInterpolator()) 
            .setRotationalVelocity(180, 180);

    结果如下:

    1-rE7DqR_ysqgDPEUnb1tWnw.gif

    自定义

    更详细的文档请阅读 Github README。

    自定义这个library的基本方式就是设置 ConfettiManager上的各种配置变量来得到适合你的动画。你可以使用bitmap建立confetto,也可以提供一个自定义的Confetto类(实现的例子请参考BitmapConfetto)。

    除此之外还支持一些属性,比如纸片触及边界或者生命结束的时候的淡出行为以及拖动。下面是一个自定义的触摸与拖动行为的例子:

    1-_l7WJcyPlJmsoSOPtPNEtg.gif

    你可以使用这个library去实现很多很酷的效果,比如Periscope的心形冒泡效果或者Facebook Messenger的金币落下动画效果。

    性能

    在Robinhood里,我们总是在意性能的问题。confetti manager内部回收了confetto对象,因此连续不断的confetti流并不会毁掉内存。再者,因为每个confetto只需知道如何绘制

    bitmap,所以你只需为每个bitmap分配一次。最后,我们预先计算了许多动画参数。因此每个动画更新的计算都是非常直接的。总之,除非你一次性的满屏显示很多纸片,否则你不用担心掉帧的问题。

    这就本文的内容,如果你有任何需求或者发现bug请在这里提交issues。

    AA分享网一个高级程序员的学习、分享的IT资源分享平台
    AA分享网-企业网站源码-PHP源码-网站模板-视频教程-IT技术教程 » 高度自定义的粒子喷发效果-Confetti
    • 257会员总数(位)
    • 5897资源总数(个)
    • 8本周发布(个)
    • 0 今日发布(个)
    • 538稳定运行(天)

    提供最优质的资源集合

    立即查看 了解详情