功能

功能本身是一个比较完整的方案,能解决用户的某种需求。

交互

交互是在某种功能下,设计如何使用这种功能。

举例

音量控制是一个功能,但通过什么样的交互去实现音量控制以及查看是交互部分需要考虑的,对于功能本身来说,只要提供一个设置音量,一个获得当前音量的功能即可。

比如,最基本的技术方案是这样。

微交互与功能的区别 - 图1

但是这样基本是不能用的一个产品,实际上我们需要更多的关于音量的设计,然后这些设计都是基于上面的基层Api.

  1. /**
  2. * @description 音量控件
  3. */
  4. class VolumeProduct {
  5. constructor(options){
  6. const{maxVolume,stepVolume} = options
  7. const sysMaxVolume = 12
  8. this.maxVolume = +maxVolume>0?+maxVolume:sysMaxVolume;
  9. this.minVolume = 0
  10. this.currentVolume = 0
  11. this.storeSilentVolume = 0
  12. this.isSilent = false
  13. this.stepVolume = stepVolume || 1
  14. this.safeVolume = 8
  15. this.openVolumePanel = false
  16. }
  17. toggleVolumePanel(){
  18. this.openVolumePanel =!this.openVolumePanel
  19. }
  20. setBiggerVolume(){
  21. if((this.currentVolume+this.stepVolume)<=this.maxVolume){
  22. this.currentVolume += this.stepVolume
  23. }else {
  24. system.warn('已经达到最大音量!')
  25. return
  26. }
  27. this.getVolume()
  28. }
  29. setSmallerVolume(){
  30. if((this.currentVolume-this.stepVolume)>=0){
  31. this.setVolume()
  32. this.currentVolume -= this.stepVolume
  33. }else {
  34. system.warn('已经达到最小音量!')
  35. return
  36. }
  37. this.getVolume()
  38. }
  39. setSilent(){
  40. this.storeSilentVolume = this.currentVolume
  41. this.isSilent = true
  42. this.currentVolume = 0
  43. this.getVolume()
  44. }
  45. resume(){
  46. this.currentVolume = this.storeSilentVolume
  47. this.isSilent = false
  48. this.getVolume()
  49. }
  50. setVolume(volume){
  51. this.currentVolume = volume
  52. this.getVolume()
  53. }
  54. getVolume(){
  55. system.tip('当前音量是:'+ this.currentVolume)
  56. if(this.volume>=this.safeVolume){
  57. system.tip('已经超过安全音量,当前音量是:'+ this.currentVolume)
  58. }else{
  59. system.tip('当前音量是:'+ this.currentVolume)
  60. }
  61. return this.currentVolume
  62. }
  63. }

分析

虽然只有设置音量和获取当前音量两个基本的api,但我们可以从交互角度设计出如此多的交互细则以及音量的定义,这些都为我们更好的控制和查看音量做了很好的实现。