功能
功能本身是一个比较完整的方案,能解决用户的某种需求。
交互
交互是在某种功能下,设计如何使用这种功能。
举例
音量控制是一个功能,但通过什么样的交互去实现音量控制以及查看是交互部分需要考虑的,对于功能本身来说,只要提供一个设置音量,一个获得当前音量的功能即可。
比如,最基本的技术方案是这样。
但是这样基本是不能用的一个产品,实际上我们需要更多的关于音量的设计,然后这些设计都是基于上面的基层Api.
/*** @description 音量控件*/class VolumeProduct {constructor(options){const{maxVolume,stepVolume} = optionsconst sysMaxVolume = 12this.maxVolume = +maxVolume>0?+maxVolume:sysMaxVolume;this.minVolume = 0this.currentVolume = 0this.storeSilentVolume = 0this.isSilent = falsethis.stepVolume = stepVolume || 1this.safeVolume = 8this.openVolumePanel = false}toggleVolumePanel(){this.openVolumePanel =!this.openVolumePanel}setBiggerVolume(){if((this.currentVolume+this.stepVolume)<=this.maxVolume){this.currentVolume += this.stepVolume}else {system.warn('已经达到最大音量!')return}this.getVolume()}setSmallerVolume(){if((this.currentVolume-this.stepVolume)>=0){this.setVolume()this.currentVolume -= this.stepVolume}else {system.warn('已经达到最小音量!')return}this.getVolume()}setSilent(){this.storeSilentVolume = this.currentVolumethis.isSilent = truethis.currentVolume = 0this.getVolume()}resume(){this.currentVolume = this.storeSilentVolumethis.isSilent = falsethis.getVolume()}setVolume(volume){this.currentVolume = volumethis.getVolume()}getVolume(){system.tip('当前音量是:'+ this.currentVolume)if(this.volume>=this.safeVolume){system.tip('已经超过安全音量,当前音量是:'+ this.currentVolume)}else{system.tip('当前音量是:'+ this.currentVolume)}return this.currentVolume}}
分析
虽然只有设置音量和获取当前音量两个基本的api,但我们可以从交互角度设计出如此多的交互细则以及音量的定义,这些都为我们更好的控制和查看音量做了很好的实现。
