Axure教程 | 如何通過拖動滑桿上的按鈕,調整數值?

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

如何通過拖動滑桿上的按鈕,調整數值?

這種部件常見于調節音量大小、色彩值等數值類型的設置。我們來分解一下部件構成,看看如何實現。

聲音設置示例

點擊這里查看在線演示

1、部件分解

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

滑桿部件的分解

2、動態面板的應用

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

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

隱藏不可見部分的內容

最終兩個動態面板初始的樣子如下:

兩個動態面板的初始位置

3、設置動態面板的onDrag事件

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

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

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

設置移動并限制移動范圍

4、計算進度

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

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

計算當前進度

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

5、完成

到這里滑桿調值基本完成了。

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

 

本文由 @Axure原型設計工場?原創發布于人人都是產品經理?,未經許可,禁止轉載。

更多精彩內容,請關注人人都是產品經理微信公眾號或下載App
評論
評論請登錄
  1. 感謝分享

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

    來自上海 回復
    1. 想出來了,剛才腦子沒轉過彎,去想分段函數去了。。

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

    來自吉林 回復
  4. 還不錯! ??

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

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

    來自廣東 回復
    1. axure8

      來自安徽 回復
  7. ?? 還出現了負值

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

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

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

    來自廣東 回復
    1. 可能是拖動的x值范圍超出了設置的范圍,處理下超出范圍后自動返回就近的坐標

      來自廣東 回復
  10. 很想學,可是細節講的不夠清晰

    來自廣東 回復
  11. 講的不夠細致啊

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

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

      來自廣東 回復
  12. 請問axure7 能夠實現么?暫時沒有更新到8呢 ?? ?? ??

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

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

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

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

      來自廣東 回復
    5. 右上角

      來自天津 回復
  13. 來自四川 回復