写给设计师看的 Framer JS —— 基础物理交互(二)

  1. 本文所有图文(除了网页截图)皆为原创,版权完全归我本人所有。如有未经允许的「任何部分或全部」的转载、抄袭、盗用,全部默认为:您已同意并接受给我本人 3 万元。本文「发布」时间:2015 年 11 月 08 号 16:01。
  2. 本系列文章将直接从实践角度出发,本着「写完一篇文章再砍掉一半」的原则,不必要的解释和说明没有展开。
  3. 阅读前请精读 Framer JS 官网的 Learn 并在阅读中配合官方文档实时查阅。
  4. 本系列文章将不定期连载,最终制作成电子书,名为《写给设计师看的 Framer JS》
  5. 需要体验效果就请点击链接,�支持任何基于 Webkit 的浏览器,不区分平台和设备。

基础物理交互(一)中,点击文中链接进行交互时可以发现:它只能点击一次,无法通过点击变化后的图形回到原样。

这是因为我们没有定义之后的操作,要定义下一次的操作结果很容易,在上面交互事件的基础上按部就班再来一次即可,但是如果一个交互是来回变化的,难道我们要定义无数次的操作结果么?

解决这个问题要理解它背后的原理。假设一个对象的交互结果有两种:0 和 1,我们将 0 和 1 看作两种状态,那么设定一次操作让其在这两种状态之间切换,即可解决上述问题。

再进一步想,所有需要用到多次的状态(交互结果),都应该定义好之后按实际场景分配使用,这样不仅让效率更高、代码更简洁,而且有利于整理思路和逻辑关系。

综上所述,当交互结果需要在不同场景使用到多次时,都应该使用 states 去实现。在 Framer 中为图层添加状态并指定变化时间、曲线、延时等:

layer.states.add
    state1:
        x: 0
        y: 0
        scale: 1
    state2:
        x: 200
        y: 200
        scale: 1.5
    state3:
        x: 400
        y: 400
        scale: 2
    ...
layer.states.animationOptions = 
    curve: "ease"
    time: 0.5
    delay: 0.2

回到一开始的例子,通过 states 让图层实现循环交互:

# add states for layer
layer.states.add
    rounded:
        borderRadius: 15
        scale: 1.5
        rotation: 180
layer.states.animationOptions = 
    time: 0.5
    curve: "ease"

# set click event
layer.on Events.Click, ->
    layer.states.next ["rounded", "default"]

为之前 “1” 的状态起个名字叫 rounded,它的参数与之前一模一样,唯一的不同是:它现在不仅是一种交互结果,同时还是一个可调用的 state

layer.states.next 的语义是按照设定好的交互事件切换状态列表,["rounded", "default"] 就是它的状态列表,相当于两首歌列表循环。
default 就是 layer 的初始状态,Framer 默认最开始 layer 的属性为 default,无需我们定义。

状态切换的交互

亲自体验:http://share.framerjs.com/h9zs7epwgz0p/


以 twitter 的发布交互进入实战,准备两张去掉状态栏的截图,去网上下载一个 iOS 9 的 UI Kit 找到状态栏素材,如图所示:

�所需截图

参照第一篇文章进行上传操作:

�有序整理 groups 列表

�xy 坐标设为 0

完成这个效果所需的代码:

$ = Framer.Importer.load "imported/Untitled 2"

# default states
Utils.globalLayers $
bg = new BackgroundLayer backgroundColor: "black"
post.y = 1334

# create post action respond area
postaction = new Layer
    width: 88
    height: 88
    x: 750 - 88
    y: 40
    superLayer: notific
    backgroundColor: false

# post action events
postaction.on Events.Click, ->

    # notific page animate
    notific.animate
        properties:
            opacity: 0.8
            scale: 0.93
        time: 0.4
        curve: "ease"

    # post page animate
    post.animate
        properties:
            y: 0
        time: 0.4
        curve: "ease"

# create cancel action respond area
cancel = new Layer
    width: 88
    height: 88
    x: 750 - 88
    y: 40
    superLayer: post
    backgroundColor: false

# cancel action events
cancel.on Events.Click, ->

    post.animate
        properties:
            y: 1334
        time: 0.4
        curve: "ease"
    
    notific.animate
        properties:
            opacity: 1
            scale: 1
        time: 0.4
        curve: "ease"

实际效果(注意看状态栏,因为它的位置是固定不变的,故需要重新准备素材):

twitter 发布交互

亲自体验:http://share.framerjs.com/lyoudbcusfo8/

新建 postactioncancel 这两个图层用来设置操作热区,至于 superLayer 的使用请查阅文档,非常简单,不再赘述。

下一篇文章讲解如何进行滑动交互。

欢迎关注我的 dribbble:https://dribbble.com/jiaxinchen

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,123评论 6 490
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,031评论 2 384
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 156,723评论 0 345
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,357评论 1 283
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,412评论 5 384
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,760评论 1 289
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,904评论 3 405
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,672评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,118评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,456评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,599评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,264评论 4 328
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,857评论 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,731评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,956评论 1 264
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,286评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,465评论 2 348

推荐阅读更多精彩内容

  • 本文所有图文(除了网页截图)皆为原创,版权完全归我本人所有。如有未经允许的「任何部分或全部」的转载、抄袭、盗用,全...
    陈加新阅读 2,313评论 1 14
  • 戳这里查看原文 练习素材:Sketch文件 在Google, Facebook, Twitter, Dropbox...
    凌乐歌阅读 1,264评论 3 5
  • 在iOS中随处都可以看到绚丽的动画效果,实现这些动画的过程并不复杂,今天将带大家一窥iOS动画全貌。在这里你可以看...
    F麦子阅读 5,101评论 5 13
  • 在iOS中随处都可以看到绚丽的动画效果,实现这些动画的过程并不复杂,今天将带大家一窥ios动画全貌。在这里你可以看...
    每天刷两次牙阅读 8,469评论 6 30
  • 妈妈的故事 自从跟妈妈关系缓和后,经常陪她聊天,聊她的小时候,她的结婚,她的婚姻生活。这才近距离的了解她,理解她...
    艳如骄阳阅读 2,612评论 0 0