什么是Affordance?

在人机交互领域中,我们常常提到某个设计的affordance。其中文对应的意思并没有一个统一的意见。Wikipedia2上先这个词被译为“承担特质”或者“环境赋使”(非常晦涩难懂),后又提出可译为“直观功能”,也有同行将其译为“可供性”3等等。是一个经常被使(滥)用,但是其义常常没能被准确表述的概念。Mads Soegarrd在HCI词汇表中总结了这个词的解释1

Affordance这个词在英文中也是一个新词。该词由认知心理学家James J. Gibson于1979年在《The Ecological Approach to Visual Perception》一书中首次提出,后来在1988年被Donald Norman在其书《The Pcychology of Everyday Things》中引入到人机交互(HCI)领域。

Norman的解释

在Norman第一次将Affordance应用到人机交互领域时,他所指的Affordance是,一个物体自身表现出的“怎样使用”的性质,对于其功能的视觉提示。用人话来说就是,这个东西看上去应该怎么使用。比如茶壶手柄是被手握着的,按钮是用来按的。按他自己的话说:

“...the term affordance refers to the perceived and actual properties of the thing, primarily those fundamental properties that determine just how the thing could possibly be used. (affordance一词指,一个物体‘被接收到的’和‘真正的’属性,其中主要的是决定这个物体该如何使用的功能性的属性)”(Norman 1988, p.9)

也就是说,一个东西的Affordance = 人们觉得一个东西要怎么用 + 这个东西本身的功能属性。比如,鼠标的affordance = 人们直观觉得它的功能(可以吃吗?可以握住?可以控制电脑指针?) +真正的功能属性(鼠标的线接口可以插电脑,左右键可以按,可以在桌面上滑动,可以控制指针)。这个“真正的功能属性”是被设计者定义的,而“人们觉得的(接收到的)功能”是在用户测试中发现的。

Gibson的解释

该词的原创者Gibson对Affordance这个词的原始使用稍有不同,他提出的Affordance是这样定义的:

"an action possibility available in the environment to an individual, independent of the individual's ability to perceive this possibility (人们在环境中的可能的操作,它与人们是有能力接受这种可能性无关)" (McGrenere and Ho, 2000)

说人话就是,Affordance指的是一个东西它可以用来干什么,它所有的功能都可以包含在它的Affordance内,而不只是人们可以用它来干什么。Gibson并没有考虑“人们接受到”的部分,而是只是指所有的可能性。比如一个门,可以用来开关(大部分人能接受到的功能),也可以用来让忍者伪装起来(不是所有人都能接收到的功能,可能忍者才能想到,但是确实可以这么用)。

到底“人们能接收到的”该不该算作一个物体的affordance的标准,这导致了后来人们对这个词使用上的混乱。像开头提到的,即使是维基百科,也在页面上提出了“承担特质”(更接近Gibson的解释)和“直观功能”(更接近Norman的解释)两种翻译。于是现在对该词的定义并没有一个定论。所以建议大家使用的时候要多加小心,如果可能尽量避免使用这个词,用更浅显直白的词代替(如“直观功能”代表Norman的解释,“可用功能”代表Gibson的解释)。如果一定要使用该词,使用时自己先给出解释以防止读者、听众的误解(当然如果硬要装逼让观众听不懂,那就随便吧)。


1 Mads Soegaard, The Glossary of Human Computer Interaction - 5. Affordances, https://www.interaction-design.org/literature/book/the-glossary-of-human-computer-interaction/affordances

2 Wikipedia 承担特质, https://zh.wikipedia.org/wiki/%E6%89%BF%E6%93%94%E7%89%B9%E8%B3%AA

3 iD公社,Affordance(可供性)和设计,http://www.hi-id.com/?p=2732

最新文章

  1. Django数据导入
  2. 我的第二个FluentNHibernate例子with Knockout
  3. IOC容器特性注入第一篇:程序集反射查找
  4. Swift 函数
  5. Python安装Selenium3
  6. 保护眼睛,开启浏览器的夜间模式 顺便学下!important的作用
  7. HDOJ/HDU 2352 Verdis Quo(罗马数字与10进制数的转换)
  8. IntraWeb.v14.0.32安装及破解指南
  9. androik_sdk 更新慢问题解决办法。
  10. 总结:C#变量,占位符等相关知识
  11. Jerry的CDS view自学系列
  12. Hello English Again
  13. js 遍历 each() 方法
  14. RabbitMQ windows本地安装
  15. (PMP)解题技巧和典型题目分析(模拟二)
  16. 获取网络图片并显示在picturbox上,byte[]数组转换成Image:
  17. HomeFragment 嵌套关系
  18. easyui以及js前端开发常见问题、用法整理(最重要的样式和图标自定义)
  19. sql server导入excel数据
  20. apache camel 条件路由

热门文章

  1. Elasticsearch(5)--- 基本命令(集群相关命令、索引CRUD命令、文档CRUD命令)
  2. 2019nc#7
  3. 玲珑杯 1137 - Sin your life(数学)
  4. codeforces 284 E. Coin Troubles(背包+思维)
  5. 牛客网 湖南大学2018年第十四届程序设计竞赛重现赛 A game
  6. Nginx实现高可用(了解)
  7. BigDecimal转String
  8. Invalid bound statement(not found):cn.e3mall.mapper.TbItemMapper.selectByExample.....
  9. 让Jenkins执行GitHub上的pipeline脚本
  10. git的几个小技巧