Axure教程 | 如何通過拖動滑桿上的按鈕,調(diào)整數(shù)值?

24 評論 31569 瀏覽 247 收藏 5 分鐘

如何通過拖動滑桿上的按鈕,調(diào)整數(shù)值?

這種部件常見于調(diào)節(jié)音量大小、色彩值等數(shù)值類型的設(shè)置。我們來分解一下部件構(gòu)成,看看如何實現(xiàn)。

聲音設(shè)置示例

點擊這里查看在線演示

1、部件分解

這樣的部件主要由三個部分組成,一個滑桿軌道,一個用來調(diào)節(jié)的按鈕,還有一個是什么呢?對了就是拖動的進度,因為axure里的部件不支持設(shè)置部分填充,所以這里會用另一個大小相同的軌道,通過設(shè)置不同的填充顏色來表示當(dāng)前拖動的進度。

滑桿部件的分解

2、動態(tài)面板的應(yīng)用

這里使用動態(tài)面板是為了應(yīng)用它的“Fit to Content”(適應(yīng)內(nèi)容)屬性,這個屬性在應(yīng)用之后,動態(tài)面板中的內(nèi)容只會在指定大小范圍內(nèi)顯示,其它區(qū)域不可見。

考慮到拖動的進度最大是軌道長度,最小為0,而為了隱藏在進度小100時的部分,需要將動態(tài)面板的“Fit to Content”(適應(yīng)內(nèi)容)勾選去掉,這樣在超出屏幕之外的內(nèi)容將不可見。

隱藏不可見部分的內(nèi)容

最終兩個動態(tài)面板初始的樣子如下:

兩個動態(tài)面板的初始位置

3、設(shè)置動態(tài)面板的onDrag事件

動態(tài)面板的事件很豐富,拖動事件是其中最重要的事件之一。我們利用拖動事件,來動態(tài)顯示當(dāng)前改變值的大小,直觀顯示。

將滑桿和小按鈕轉(zhuǎn)成一個動態(tài)面板,移動到內(nèi)容的最左邊,只顯示出小按鈕,表示當(dāng)前位置在0。再將該動態(tài)面板和滑桿軌道再轉(zhuǎn)成一個外層的動態(tài)面板,注意給動態(tài)面板起個名字,便于后面選擇。

為第一個動態(tài)面板添加onDrag事件,選擇move操作,在右邊選擇該動態(tài)面板,設(shè)置為只沿x軸移動(with drag x),并且在x軸上的移動范圍:left>=-300 并且 left<=0。

設(shè)置移動并限制移動范圍

4、計算進度

因為我們畫的軌道寬度并不是剛好100,可能大于或小于100,例如這個例子里,軌道寬度為300,因此我們要根據(jù)當(dāng)前被拖動的動態(tài)面板的x位置,來計算在軌道上移動的百分比。公式如下:

[[(100-Math.abs(LVAR1.x)/3).toFixed(0)]]

計算當(dāng)前進度

使用局部變量LVAR1表示動態(tài)面板,這樣好取它的x位置。計算方法為根據(jù)當(dāng)前x位置除以3(因為全長300,除以3剛好等于100),注意要用100減掉這個值,而且因為當(dāng)前位置是負值,所以這里使用了取絕對值(Math.abs(值))的方法去掉負號,最后結(jié)果取整(toFixed(0)表示小數(shù)位為0,即沒有小數(shù))。

5、完成

到這里滑桿調(diào)值基本完成了。

知道大致思路后,就可拓展做成你想要的原型效果了,這就要看你的需要啦!

 

本文由 @Axure原型設(shè)計工場?原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理?,未經(jīng)許可,禁止轉(zhuǎn)載。

更多精彩內(nèi)容,請關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號或下載App
評論
評論請登錄
  1. 感謝分享

    來自北京 回復(fù)
  2. 提問:最近做一些按揭貸款的原型,通過滑動可以顯示 6個月 12個月 18個月 24個月,應(yīng)該怎么修改函數(shù)實現(xiàn)呢?想了很久了,期待大神支招

    來自上海 回復(fù)
    1. 想出來了,剛才腦子沒轉(zhuǎn)過彎,去想分段函數(shù)去了。。

      來自上海 回復(fù)
  3. 用tofixed經(jīng)常顯示4位小數(shù) ? 后來改用了Math.ceil()就好了,也不造啥情況 ? 有此類問題的小伙伴可以試試

    來自吉林 回復(fù)
  4. 還不錯! ??

    來自四川 回復(fù)
  5. axure7.0沒有設(shè)置沿X軸移動的范圍,難道是8.0的新功能 ? ? ?

    來自廣東 回復(fù)
  6. 啊,7.0打不開源文件,求大神指教

    來自廣東 回復(fù)
    1. axure8

      來自安徽 回復(fù)
  7. ?? 還出現(xiàn)了負值

    來自廣東 回復(fù)
  8. [[(100-Math.abs(LVAR1.x)/3).toFixed(0)]],能解釋一下這個公式么? ?? ?? ??

    來自廣東 回復(fù)
    1. 帖子里解釋了啊。
      因為當(dāng)前進度值的位置在最開始顯示在動態(tài)面板之外,所以它的起始位置是負值,用數(shù)學(xué)的Math.abs來取絕對值

      來自安徽 回復(fù)
  9. 第一拖動的時候正常,再往回拖動的時候,拖動軌跡無法回到初始狀態(tài) ?

    來自廣東 回復(fù)
    1. 可能是拖動的x值范圍超出了設(shè)置的范圍,處理下超出范圍后自動返回就近的坐標(biāo)

      來自廣東 回復(fù)
  10. 很想學(xué),可是細節(jié)講的不夠清晰

    來自廣東 回復(fù)
  11. 講的不夠細致啊

    來自廣東 回復(fù)
    1. 在線演示里可以下載源文件啊,看看源文件吧

      來自安徽 回復(fù)
    2. 沒有看到原文件?

      來自廣東 回復(fù)
  12. 請問axure7 能夠?qū)崿F(xiàn)么?暫時沒有更新到8呢 ?? ?? ??

    來自廣東 回復(fù)
    1. 可以的,沒有用到8的什么特性

      來自安徽 回復(fù)
    2. 您好,能否麻煩把流程細化一下么?比如0-100,這個數(shù)字是如何設(shè)置的呢?函數(shù)的部分如何輸入呢?實在是最近需要,但是除了您的文章沒找到滑塊滑動數(shù)值改變的方式。感謝。

      來自廣東 回復(fù)
    3. 在線演示里可以下載源文件啊,看看源文件

      來自安徽 回復(fù)
    4. 在線演示只有演示效果,怎樣下載原文件?

      來自廣東 回復(fù)
    5. 右上角

      來自天津 回復(fù)
  13. 來自四川 回復(fù)