選擇器效果實現(xiàn),這里有4個關鍵步驟
選擇器效果的實現(xiàn),這里有四個關鍵步驟,一起來看看~
關鍵步驟 1
新建一個矩形作為背景,為了方便計算,將矩形設置為寬300,高200;矩形設置為灰色&無邊框。
數(shù)據(jù)集為了方便,使用中繼器,寬300,高40,位于中間位置,插入9條數(shù)據(jù)。
上下有遮罩的效果,新建2個矩形,上下各高80,填充色為漸變效果。
為了實現(xiàn)拖動的效果,需要在中繼器上覆蓋一個動態(tài)面板,同時將中繼器設置為動態(tài)面板,實現(xiàn)隨著面板的拖動,中繼器動態(tài)面板也跟著移動,覆蓋的動態(tài)面板寬高與中繼器一致。
PS:只有移動才有“跟隨”的動畫效果,選擇拖動的交互事件無“跟隨”可選擇。
為了讓拖動的面板保證只能“垂直拖動”,需要加交互事件“拖動時”。
關鍵步驟 2
此時需要作判斷,讓第一個選項與最后一個選項能有邊界劃分,如第一個選項向上拖動,就需要自動回到第一個選項,最后一個選項向下拖,需要回到最后一個選項。
以上遮罩矩形的bottom進行邊界劃分:
此時X不變;
IF 拖動的面板.top>上遮罩矩形.bottom;
移動拖動面板到絕對位置拖動面板.X;Y到上遮罩矩形.bottom。
同理 ,最后一個選項也是如此,但是最后一個選項的移動Y的距離與上面的不一致,具體的可以通過手動在紙上進行模擬,就會算出來計算的公式。(PS:Y與height是不一樣的)
關鍵步驟 3
因為中繼器的面板的長度是超過400,而且通過隱藏也是非常復雜,此時全選,將整個轉(zhuǎn)化為動態(tài)面板,調(diào)整寬高,可以想象為動態(tài)面板內(nèi)的是可見的,動態(tài)面板外的不可見。
需要實現(xiàn)拖動時回到最近的選項,此時要加判斷,判斷當前的選項在中繼器中的位置,使用數(shù)學函數(shù)實現(xiàn),判斷思路:
拖動面板.top/40后取整數(shù),取整函數(shù)tofixed(0).因計算的數(shù)值無法作為對象,此時再次使用數(shù)據(jù)函數(shù)math.min或者math.max將數(shù)值轉(zhuǎn)化為對象,此時的Y值應該為Math.min(拖動面板.top/40).tofixed(0)*40,拖動結(jié)束時加交互事件。
關鍵步驟 4
讀取數(shù)據(jù)到文本標簽元件,首先要判斷當前選項哪個數(shù)據(jù),需要讀取當前的索引,先判斷當前滾動的條數(shù)與索引的對應關系,新建一個文本標簽‘tishi’的文本為關鍵步驟3的數(shù)學公式:
Math.min(拖動面板.top/40).tofixed(0)
可以看出:索引與選項位置的對應關系:3-位置=索引。
- 》2
- 》1
- 》0
- 》-1
通過中繼器的過濾器(即篩選)可以顯示出對應索引的數(shù)據(jù),但是!篩選的話,就無法顯示原始的數(shù)據(jù),此時通過采用復制中繼器B,生成元件為空但是有數(shù)據(jù)的中繼器進行篩選,篩選后的數(shù)據(jù)讀取到提示的文本標簽。
注意!篩選后只剩一條數(shù)據(jù),此時中繼器B只有1數(shù)據(jù)。再從中繼器B中讀取數(shù)據(jù)到文本。
篩選條件:通過索引進行篩選。
拖動面板中建立篩選器,將中繼器中的數(shù)據(jù)篩選出1條,中繼器再將數(shù)據(jù)讀取到其他元件。篩選后數(shù)據(jù)出來,在中繼器B中讀取數(shù)據(jù)到文本。
文本頁面加載時會顯示最后的一條數(shù)據(jù),此時需要判斷當前數(shù)據(jù)是否有進行篩選(即是否為1條數(shù)據(jù)),是的話進行顯示。
本文由 @?啦啦啦 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載
題圖來自Unsplash,基于CC0協(xié)議
這樣看看不懂。。。
+1