Framer學(xué)習(xí)記錄之第一個(gè)十條

一训枢、layer有一個(gè)屬性叫做animate,用來做動(dòng)畫忘巧,直接加在layer的名字上恒界,例如layerB.animate

它有兩個(gè)參數(shù):

第一個(gè)參數(shù)是必須的,沒有它就沒有動(dòng)畫砚嘴,他是在描述動(dòng)畫的屬性(property)例如要在x方向上移動(dòng)500px十酣,在y方向上移動(dòng)100px,以x為軸旋轉(zhuǎn)180度际长,以y為軸旋轉(zhuǎn)360度等等耸采。properties是animate的參數(shù),故縮進(jìn)在其麾下也颤,而x:洋幻、y:、rotation是properties的具體值翅娶,故縮進(jìn)在properties的麾下文留。

第一個(gè)參數(shù)除了通過設(shè)置屬性來實(shí)現(xiàn)動(dòng)畫外,還可以通過設(shè)置layer的目標(biāo)狀態(tài)來實(shí)現(xiàn)竭沫。語法為(layerA.animate “stateX”燥翅,)。這里千萬不要忘記[ , ]沒有這個(gè)小家伙不起作用蜕提。此種方式的options與前一種寫法一致森书。

第二個(gè)參數(shù)是可選擇的(說是“個(gè)”,其實(shí)是一群谎势,他們級別與屬性相同)凛膏,進(jìn)一步去修改調(diào)整動(dòng)畫的狀態(tài)和屬性,例如有time脏榆,curve等等猖毫。它與properties同級別

二、另外须喂,關(guān)于layer的一個(gè)屬性叫做“html”吁断,其作用就像是在一個(gè)普通的Layer(非TextLayer)上寫文字,可以將? html: "FUCK THE WORLD"? 寫在layer的縮進(jìn)屬性中坞生,也可以在底下再起一行仔役,寫成 layerA.html = "FUCK THE WORLD" .

另外,修飾這個(gè)html用的是“style”屬性是己,用的是駝峰命名法的CSS屬性又兵。每一個(gè)layer都有style的屬性,它是將CSS的屬性都引入進(jìn)來進(jìn)行修飾的手段卒废,在CSS中屬性的復(fù)合詞中是用 “-” 來命名的沛厨,并且全部都小寫乘盼,例如background-color , padding-top,在coffeescript(以及JS)中是用駝峰命名法的俄烁,例如backgroundColor绸栅,paddingTop。

對于style的語法來說页屠,是這樣的 layerA.style =粹胯,然后換行在其子層級中寫屬性和屬性值(這一對兒在CSS中被稱之為一條聲明),兩者都用雙引號引起來(這表示難道是引用CSS的意思嗎辰企,哈哈哈哈)风纠,同時(shí)中間用冒號隔開(這一點(diǎn)在CSS中也一樣)。例如“outline” : “1px solid red” 牢贸,注意一條屬性對寫完后要加“竹观,”換號寫另一條(不加也沒關(guān)系,似乎是在父子層之間若有“潜索,”是必要的臭增,同層間也無所謂了的感覺)。而一個(gè)屬性若包含多個(gè)屬性值時(shí)竹习,可以用空格隔開來寫不同屬性值誊抛。

另外對于設(shè)定或者修改一條屬性時(shí),也可以使用layerA.style["outline"] = “1px solid red” 的方式來寫整陌。

這里對其中一項(xiàng)聲明作說明拗窃,lineHeight表示的是行高,而這個(gè)行高表示的是一個(gè)高度泌辫,文字寫在這個(gè)高度里随夸,并且文字總是居于高度的中線處(無論文字大小)震放。




三宾毒、有趣的是,上邊提到的動(dòng)畫也可以被賦值到一個(gè)名字?(如同給一個(gè)新建圖層賦值到一個(gè)名字中一樣)里以方便將來指定或者調(diào)用澜搅。例如在設(shè)定動(dòng)畫時(shí)使用 ? XXanimation = Layer.animate ?來指定動(dòng)畫伍俘。然后在后續(xù)中可以使用 ?XXanimation.onAnimationEnd ?-> ?來對這個(gè)動(dòng)畫進(jìn)行結(jié)束監(jiān)聽邪锌。要是不指定這個(gè)名字勉躺,想要監(jiān)聽就不太方便制定了。

四觅丰、這里提到了動(dòng)畫對象的一個(gè)事件——on Events.AnimationEnd饵溅,它的監(jiān)聽可以簡寫為onAnimationEnd -> ?利用這種監(jiān)聽可以將動(dòng)畫片段進(jìn)行連接,動(dòng)畫A結(jié)束后開始動(dòng)畫B妇萄,動(dòng)畫B結(jié)束后再開始動(dòng)畫C等等蜕企。

這里需要注意的一點(diǎn)是:(動(dòng)畫開始)layer.animate與(監(jiān)聽動(dòng)畫結(jié)束)layer.onAnimationEnd 是在邏輯同一層級的咬荷。而在動(dòng)畫片段接續(xù)式中,后續(xù)動(dòng)畫是上一個(gè)動(dòng)畫結(jié)束監(jiān)聽的子層級轻掩。因此整體會(huì)形成一種向左上角登頂?shù)碾A梯式結(jié)構(gòu)幸乒。這解決了時(shí)間與動(dòng)畫之間的關(guān)系。

??on "end" , -> ?可能是一種極簡的用法唇牧,不推薦罕扎。而這個(gè)事件不同于事件當(dāng)中的特殊一類——Change Events,可以用來監(jiān)聽任意對象的一些屬性值丐重,并且能夠獲惹徽佟(返回)實(shí)時(shí)的該屬性值,因此經(jīng)常與Utils的modulate混合使用扮惦,來做范圍映射臀蛛。范圍映射建立的是兩個(gè)不同的屬性量之間的換算關(guān)系。它能夠解決一個(gè)量隨另一個(gè)量變化的問題崖蜜。

五浊仆、關(guān)于modulate(調(diào)制,tiaozhi)

它最終得到的是一個(gè)因變量豫领,這個(gè)值可以賦給某一個(gè)對象的一個(gè)屬性氧卧,使這個(gè)屬性按照所賦值來變化。

Utils.modulate有四個(gè)參數(shù):

第一個(gè)是一個(gè)變量氏堤,并且是自變量(用戶導(dǎo)致的變量)沙绝,往往使用監(jiān)聽值(監(jiān)聽得到由于用戶的行為導(dǎo)致某個(gè)屬性的實(shí)時(shí)數(shù)值)來獲取。

第二個(gè)參數(shù)是一個(gè)數(shù)值范圍鼠锈,它表示的是自變量的變化范圍闪檬。

第三個(gè)參數(shù)也是一個(gè)數(shù)值范圍,它表示的是因變量的變化范圍购笆。

第四個(gè)參數(shù)是一個(gè)布爾值粗悯,表示是否允許因變量取值超過因變量的范圍。默認(rèn)是不允許的同欠,即最大最小值即為第三參數(shù)样傍。

六、Spring的屬性

將彈簧的變化性質(zhì)應(yīng)用到動(dòng)畫的各種屬性中铺遂。

其一是 friction衫哥,指的是摩擦力,數(shù)值越大襟锐,摩擦消耗的能量越快撤逢。彈簧越快回到最終狀態(tài)。

另外一個(gè)是tension,指的是拉力(張力)蚊荣,數(shù)值越大初狰,彈簧被拉伸的力越大。

velocity指的是速度互例,表示的應(yīng)該是簡諧運(yùn)動(dòng)的最大速度

tolerance指的是 忍受力 奢入,值越大,活動(dòng)范圍縮小媳叨,越呆滯

可以使用語法:curve: Spring(friction: 10)

七俊马、過渡切換

從一個(gè)狀態(tài)切換到另一個(gè)狀態(tài) 為了豐富界面的情緒感受 往往采用一些過渡動(dòng)畫,其中一項(xiàng)是默認(rèn)狀態(tài)時(shí)scale值為0肩杈,而馬上為之加一個(gè)動(dòng)畫使其scale值變?yōu)?柴我,在這個(gè)過程中可以使用curve來對其做修飾,更有動(dòng)感扩然。

另一種很酷的方式是首先使對象隱藏在某個(gè)側(cè)面(上側(cè)艘儒、下側(cè)、左側(cè)或者右側(cè))——設(shè)置其opacity為0夫偶,然后利用動(dòng)畫或者狀態(tài)轉(zhuǎn)換使其發(fā)生位移——移動(dòng)到應(yīng)該在的位置界睁,并且opacity變?yōu)?.

這些變化的過程都可以用Spring來做修飾。很有動(dòng)感

八兵拢、for-loop以及其復(fù)合使用

用for-loop可以一次性生成多個(gè)對象——for i in [0..X]翻斟,一個(gè)變量 i 在這個(gè)數(shù)組中從第一個(gè)值0取到最后一個(gè)值X,取值一圈说铃。此時(shí)若在其子層級任意新建圖層(不用寫[ ])访惜,就相當(dāng)于命令這個(gè)新建圖層聽從 其父層級的 循環(huán)命令(從0循環(huán)到X,跑X+1次),從而成成多個(gè)對象腻扇,再使用 i 的數(shù)學(xué)函數(shù)來定義x以及y债热,從而確定每一個(gè)對象的位置。

每一個(gè)對象是由它所取的值 “i” 誕生的幼苛,同時(shí)各種屬性也可以通過 “i” 來定義窒篱。

這種for循環(huán)還可以復(fù)合使用,在for n in[1..N]的子層舶沿,再寫一個(gè)for m in[1..M]墙杯,就是他的復(fù)合使用,這類似于布爾運(yùn)算的“且”括荡,在下一子層創(chuàng)建新圖層高镐,此時(shí)便可得到M*N個(gè)圖層,(對第一個(gè)數(shù)組的每一個(gè)數(shù)值都循環(huán)一次第二數(shù)組中的每一個(gè)數(shù)值)

這個(gè)事例讓我加深了對X和Y的理解一汽,可以將其進(jìn)一步理解為行 列的概念避消,y與行相關(guān),x與列相關(guān)召夹,例如在上例中若設(shè)定x:50*m 表示的是生成m列岩喷,某一列的頭到下一列的頭的距離為50,若設(shè)定y:50*m 表示的則是生成m行监憎,某一行的頭到下一行的頭的距離為50纱意。

另外,xy的值鲸阔,是以最親最近的父圖層的左上角為原點(diǎn)的坐標(biāo)值(center同理)偷霉。可以為一個(gè)對象定位褐筛,也可以利用位置差制作移動(dòng)動(dòng)畫类少。

九、數(shù)值的引用

變量可以采用 “ #{i} ” 的方式進(jìn)行輸入或者輸出渔扎。

例如在 layer.html = "#{a}" 是在對應(yīng)的對象里輸出對應(yīng)的數(shù)值硫狞。又如在“rgba(#{R1},#G{G1},#B{B1},1)” 中就是變量數(shù)值的輸入晃痴。

變量的變是相對的残吩,事情發(fā)生前它是變量,在變量的范圍內(nèi)任意的取值倘核,在事情發(fā)生后就變成一個(gè)個(gè)的實(shí)際的對象泣侮。但是這些對象天生就和某個(gè)固定的數(shù)字綁在了一起,正是這個(gè)數(shù)字驅(qū)動(dòng)了這個(gè)對象的誕生紧唱,同時(shí)也驅(qū)動(dòng)了這個(gè)對象的所有屬性活尊。或許這只是一種方式來表達(dá)這種有規(guī)律的存在-----即歸納式的表述漏益。

R1是a的函數(shù)酬凳,G1是b的函數(shù)。

十遭庶、animationOptions是layer的另一個(gè)屬性宁仔,它有一系列參數(shù)(都是可選的)其一是delay后邊跟的是一個(gè)數(shù)值。(其它還包括curve峦睡、curveOptions翎苫、time、repeat榨了、colorModel煎谍、instant)

注意:它是直接用來修飾圖層對象,而不是動(dòng)畫對象龙屉。容易誤解為用來修飾動(dòng)畫對象呐粘。一旦被設(shè)定满俗,就是該圖層參與的所有動(dòng)畫都會(huì)被設(shè)定,這個(gè)被設(shè)定的屬性就變成了圖層的屬性作岖,相伴終生唆垃。

另外,這個(gè)屬性實(shí)質(zhì)上就是單獨(dú)指定layerA.animate的第二參數(shù)options痘儡。只是設(shè)定在animate的參數(shù)中時(shí)辕万,只是對這個(gè)animate的動(dòng)畫起作用,而對其他動(dòng)畫并沒有影響沉删。


當(dāng)然也可以只是對一個(gè)圖層對象的某一狀態(tài)進(jìn)行修飾渐尿。例如

可以隨著添加圖層狀態(tài)來指定
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市矾瑰,隨后出現(xiàn)的幾起案子砖茸,更是在濱河造成了極大的恐慌,老刑警劉巖殴穴,帶你破解...
    沈念sama閱讀 211,290評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件渔彰,死亡現(xiàn)場離奇詭異,居然都是意外死亡推正,警方通過查閱死者的電腦和手機(jī)恍涂,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評論 2 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來再沧,“玉大人,你說我怎么就攤上這事尊残。” “怎么了寝衫?”我有些...
    開封第一講書人閱讀 156,872評論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長慰毅。 經(jīng)常有香客問我,道長汹胃,這世上最難降的妖魔是什么婶芭? 我笑而不...
    開封第一講書人閱讀 56,415評論 1 283
  • 正文 為了忘掉前任着饥,我火速辦了婚禮,結(jié)果婚禮上宰掉,老公的妹妹穿的比我還像新娘赁濒。我一直安慰自己,他們只是感情好孟害,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,453評論 6 385
  • 文/花漫 我一把揭開白布拒炎。 她就那樣靜靜地躺著,像睡著了一般纹坐。 火紅的嫁衣襯著肌膚如雪枝冀。 梳的紋絲不亂的頭發(fā)上舞丛,一...
    開封第一講書人閱讀 49,784評論 1 290
  • 那天耘子,我揣著相機(jī)與錄音,去河邊找鬼球切。 笑死谷誓,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的吨凑。 我是一名探鬼主播捍歪,決...
    沈念sama閱讀 38,927評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼鸵钝!你這毒婦竟也來了糙臼?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,691評論 0 266
  • 序言:老撾萬榮一對情侶失蹤恩商,失蹤者是張志新(化名)和其女友劉穎变逃,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體怠堪,經(jīng)...
    沈念sama閱讀 44,137評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡揽乱,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,472評論 2 326
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了粟矿。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片凰棉。...
    茶點(diǎn)故事閱讀 38,622評論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖陌粹,靈堂內(nèi)的尸體忽然破棺而出撒犀,到底是詐尸還是另有隱情,我是刑警寧澤掏秩,帶...
    沈念sama閱讀 34,289評論 4 329
  • 正文 年R本政府宣布绘证,位于F島的核電站,受9級特大地震影響哗讥,放射性物質(zhì)發(fā)生泄漏嚷那。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,887評論 3 312
  • 文/蒙蒙 一杆煞、第九天 我趴在偏房一處隱蔽的房頂上張望魏宽。 院中可真熱鬧腐泻,春花似錦、人聲如沸队询。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蚌斩。三九已至铆惑,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間送膳,已是汗流浹背员魏。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工撕阎, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人虏束。 一個(gè)月前我還...
    沈念sama閱讀 46,316評論 2 360
  • 正文 我出身青樓镇匀,卻偏偏與公主長得像,于是被迫代替她去往敵國和親汗侵。 傳聞我的和親對象是個(gè)殘疾皇子囊骤,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,490評論 2 348

推薦閱讀更多精彩內(nèi)容

  • 在iOS中隨處都可以看到絢麗的動(dòng)畫效果也物,實(shí)現(xiàn)這些動(dòng)畫的過程并不復(fù)雜,今天將帶大家一窺ios動(dòng)畫全貌滑蚯。在這里你可以看...
    每天刷兩次牙閱讀 8,469評論 6 30
  • 在iOS中隨處都可以看到絢麗的動(dòng)畫效果,實(shí)現(xiàn)這些動(dòng)畫的過程并不復(fù)雜坤次,今天將帶大家一窺iOS動(dòng)畫全貌斥赋。在這里你可以看...
    F麥子閱讀 5,101評論 5 13
  • CoreAnimation:Core Animation自身并不是一個(gè)繪圖系統(tǒng)。它只是一個(gè)負(fù)責(zé)在硬件上合成和操縱應(yīng)...
    YGoooooooooal閱讀 572評論 0 1
  • 顯式動(dòng)畫 顯式動(dòng)畫滑绒,它能夠?qū)σ恍傩宰鲋付ǖ淖远x動(dòng)畫,或者創(chuàng)建非線性動(dòng)畫疑故,比如沿著任意一條曲線移動(dòng)。 屬性動(dòng)畫 ...
    清風(fēng)沐沐閱讀 1,926評論 1 5
  • 夏季養(yǎng)心,心靜自然涼育瓜,可多吃富含維生素的水果和蔬菜栽烂。 太陽曬得人們都感覺很熱,不要吃大量開水腺办,小心會(huì)中暑,可以煮些...
    文學(xué)李明海閱讀 279評論 2 3