[教程翻译]创建一个Inbox无邮件提示动画

作者: leadream | 来源:发表于2016-02-25 21:02 被阅读246次

    本教程翻译自prototypingwithframer,作者Kenny Chen,用户体验设计师。prototypingwithframer是Kenny的博客,会不定期的分享他使用Framer的教程和心得。

    当我看见谷歌动效设计师John Schlemmer设计的Inbox无邮件提示动画时,我非常喜欢它的简洁优雅,以及带给我的愉悦感受。我决定用Framer重新设计一个,现在就跟着我一起完成它吧!

    下面是我们要做到的实际效果:



    对于云朵,创建几个白色的圆盘并合并它们,然后创建一个长方形置于底部,使用减去选项,让云朵有一个笔直的底边。

    导入图像之后,你的原型里就可以使用这些图片了。把它们拖放进Framer然后更新一下layers信息,很容易把它们放进来,但你可能要针对图片的尺寸以及动画设置做一些轻微的调整。

    sun = new Layer    
        width: 360, height: 360
        opacity: 0
        scale: 0
        image:"images/sun.png"
    
    cloud = new Layer    
        x: sun.midX - 50, y: sun.midY
        width: 204, height: 122
        scale: 0
        image:"images/cloud.png"
    

    为了让太阳旋转,我们再次创建一个animation对象。我们可以很简单的改变之前设置的太阳动画属性,但是我们要给他设置一个不一样的动画曲线——缓慢结束(ease-out),动画时间设置为2秒。

    animateSunRotate = new Animation    
        layer: sun
        properties:
            rotation: 315
        curve: "ease-out"
        time: 2
    

    把旋转动画加入其他动画开始序列。

    animateBg.start()
    animateSun.start()
    animateSunRotate.start()
    animateCloudScale.start()
    animateCloudMove.start()
    

    在太阳和云朵显现之后,我们还要创建一个动画,让它们全部逐渐变大并消失。为了达到这个效果,创建一个layer作为容器包含所有layer。

    # Hold all layers    
    container = new Layer
        width: 1000, height: 1000
        backgroundColor: "transparent"
    container.center()
    

    给太阳、云朵和圆盘背景设置父图层。

    # Create background circle layer
    circleBg = new Layer
    width: 480, height: 480 
    borderRadius: "50%" 
    opacity: 0.5 
    scale: 0
    backgroundColor: "#FFFFFF"
    superLayer: container
    circleBg.center()
    
    # Create sun layer
    sun = new Layer
    width: 360, height: 360 
    opacity: 0 
    scale: 0
    image:"images/sun.png"
    superLayer: container
    sun.center()
    
    # Create cloud layer
    cloud = new Layer
    x: sun.midX - 50, y: sun.midY
    width: 204, height: 122
    scale: 0 
    image:"images/cloud.png"
    superLayer: container
    

    另一种相反的方式就是我们给这个容器图层设置三个子图层。

    一旦太阳转动停止,就要让容器图层的scale逐渐变成0。为了让整体先弹性的放大一点点,我慢慢地尝试,以给它们设置一个合适的动画曲线值。

    
    # Hide container when done
    animateSunRotate.on "end", ->
        container.animate
            properties:
                scale: 0
            curve: "cubic-bezier(0.6, -0.28, 0.735, 0.045)"
            time: .6
    

    这是在Framer中最终的动画效果:

    但这不是最完美的,还有很多细节诸如云朵的阴影和移动的方式,但是Framer是为了交互原型而生的,并非制作这种交互动画的。但是对于整个制作过程我很开心,你可以在这里看见原型和全部的代码:http://share.framerjs.com/l1g3n5geop0t

    如果你还没有安装Inbox,那就把它下载下来并清空邮箱来体验一下这个令人愉悦的小动画(你的所有邮件都会被清空哦!还是不要做这么大的牺牲)。如果你善于发现,这个APP中还有很多其他好玩有趣的交互动效。如果你对谷歌的动效和设计理念感兴趣,还可以仔细研读一下材料设计指导

    ※本文系原创文章,转载请务必注明:转载自leadream的简书。谢谢!※

    相关文章

      网友评论

        本文标题:[教程翻译]创建一个Inbox无邮件提示动画

        本文链接:https://www.haomeiwen.com/subject/dtyikttx.html