選擇器效果實現(xiàn),這里有4個關鍵步驟

3 評論 3829 瀏覽 10 收藏 7 分鐘

選擇器效果的實現(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é)議

更多精彩內(nèi)容,請關注人人都是產(chǎn)品經(jīng)理微信公眾號或下載App
評論
評論請登錄
  1. 這樣看看不懂。。。

    來自福建 回復
    1. +1

      來自上海 回復