[Framer教程]一起做个豆瓣电影滑动效果

没有写代码的命,但有一颗写代码的心,Framer就是为你而生。Framer语法类似于javascript但又有些不同,我们可以使用简单的代码实现一些动态效果。对于“望码生畏”的人来说,只要用一次就会爱上它的。甚至于,时间久了你还能对代码知晓一二。

那就和我一起来做吧!先看下效果:

动效演示

拆解一下动作,可以发现其实很简单:随着手指拖动内容上滑,海报小幅度上滑,topBar逐渐显示,当内容到达顶部时,电影名称显示出来。好了我们开始吧。

一、准备工作:

①首先点击顶部File->New创建一个新的文件,会出现一个默认工程,里面已经有一个实例了。

新建文件

②再次点击File->Save将该文件保存在某个文件夹下,默认以.framer结尾。

保存文件

③打开刚才那个文件夹,里面已经有了这些文件,其中images里面可以放一些你要用到的图片。

文件详情

④我们用到三个图片:内容、海报和顶部图标。

图片文件

二、写layers

Framer是用一个个layer(层)来组织视图的,和PS的原理类似。先生成的layer一般会在最下面,一层层叠加。Framer最新版新增了层级视图,我们可以清楚地看到该文件层级如下:

层级视图

接下来我们就一个个去写每一个层:

layers图解

模糊背景层,就是海报下方的模糊背景,命名为posterBg,代码如下:

posterBg

我们会通过一些属性来给layer布局,这段代码的意思是,新建一个layer,命名为posterBg,它的一些属性如下:

y即纵向坐标,手机屏幕上坐标原点为左上角,横向向右为X轴,纵向向下为Y轴,这里-40表示该图片向上移动40像素;width即宽度,这里为1000,比屏幕宽,主要是为了完全覆盖屏幕;height为高度,设为900;blur即模糊度;style就是它的一些样式,在其内部我们可以定义背景为一张图片,不重复,背景图片自动100%宽度,可以参考给电脑设置壁纸的选项。最后为了让这个图片居中显示,我们加了一句:posterBg.centerX(0),表示其中心坐标在屏幕中心处。

类似的,我们可以定义poster、scroll、content、topBar、topIcon。这里要做特别说明的是scroll这个layer,这是Framer里面一种特殊的layer,主要为了方便制作可以滚动浏览的视图。它的定义方式和其他layer不一样,用new ScrollComponent来创建,里面的scrollHorizontal:false代表禁止水平滚动,directionLock:true代表锁定方向,即只可以纵向滑动。

content是滚动视图的内容页,里面的superlayer:scroll.content表示其父级layer是scroll下面的content,等于是把content嵌入到scroll的content中,就可以滚动它了。

scroll

最后,我们要给scroll的移动添加事件监控,如下:

事件监控

这里事件监控就是说在监控到有触摸事件时,要执行一定的响应动作。结合代码,这里监控的是scroll的Move(注意大小写)事件:scroll.on Events.Move表示监控scroll移动的事件。这里我们要执行的是,topBar的透明度变化,poster的位置变化,topIcon中的文字显示和隐藏。

topBar.opacity = Utils.modulate(scroll.scrollY, [0, 500], [0, 1], true)

这一句中的Utils.modulate()是Framer提供的范围转换函数,简单来说就是将scroll纵向移动的距离scrollY在0到500范围内等比例转换到0到1内,true表示超出部分使用用边界值。比如scroll.scrollY=300,处于0到500中五分之三的位置,而0到1中五分之三的位置是0.6,所以就返回0.6。而scroll.scrollY=600时,超出了0到500的范围,就返回500。

类似的,我们还要小海报poster随着滑动时改变位置,所以就使用下面这句代码给其赋予一个位置。

poster.y = Utils.modulate(scroll.scrollY, [0, 500], [150, 80], true)

同时,当内容滚动到顶部时,就要显示出电影名称,否则就不显示,于是就有了下面的代码:

if(scroll.scrollY>500)

    topIcon.html = "《夏天的尾巴》台湾青春剧"

    else topIcon.html = ""


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


最后附上源代码,如有问题欢迎一起探讨。

posterBg = new Layer({

y:-40,

width:1000,

height:900,

blur:60,

style:{

"background": "url(images/poster.png) no-repeat"

"background-size":"100%"

}

})

posterBg.centerX(0)

poster = new Layer({

y:150,

width:300,

height:500,

style:{

"background": "url(images/poster.png) no-repeat"

"background-size":"100%"

}

})

poster.centerX(0)

scroll = new ScrollComponent({

width:Screen.width,

height:Screen.height,

scrollHorizontal: false,

directionLock: true

})

content = new Layer({

y:600,

width:Screen.width,

height:1600,

superLayer:scroll.content,

style:{

"background": "url(images/content.png) no-repeat"

"background-size":"100%"

}

})

topBar = new Layer({

width:Screen.width,

height:100,

opacity:0,

style:{

"background": "#49db9c"

}

})

topIcon = new Layer({

y:25,

width:Screen.width,

height:50,

style:{

"background": "url(images/topIcon.png) no-repeat"

"background-size":"100%"

"text-align":"center"

"line-height":"1.5"

}

})

scroll.on Events.Move, ->

topBar.opacity = Utils.modulate(scroll.scrollY, [0, 500], [0, 1], true)

poster.y = Utils.modulate(scroll.scrollY, [0, 500], [150, 80], true)

if(scroll.scrollY>500)

topIcon.html = "《夏天的尾巴》台湾青春剧"

else topIcon.html = ""

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

推荐阅读更多精彩内容

  • 各种纯css图标 CSS3可以实现很多漂亮的图形,我收集了32种图形,在下面列出。直接用CSS3画出这些图形,要比...
    剑残阅读 9,383评论 0 8
  • 1. tab列表折叠效果 html: 能源系统事业部 岗位名称: 工作地点 岗位名...
    lilyping阅读 1,802评论 0 1
  • 在iOS中随处都可以看到绚丽的动画效果,实现这些动画的过程并不复杂,今天将带大家一窥iOS动画全貌。在这里你可以看...
    F麦子阅读 5,075评论 5 13
  • 一、CAShapelayer 我们知道可以不使用图片情况下利用CGpath去构建任意形状的阴影。其实我们也可...
    小猫仔阅读 1,393评论 0 5
  • 夜深人静时你便能够体会一座城市的孤独,每座城市的孤独感有不一样的味道。 广州现人口1404.35万人(2016)其...
    Edenn_阅读 202评论 0 0