晚上十一点多。电梯门“叮”一声合上,手机总算不震了。白天微信里攒的那几十条未读,这时候全歇菜。我盯着屏幕右上角那个转个不停的加载圈,脑子里突然就蹦出以前学网页动画的旧账。刚入行那会儿,我多轴啊。恨不得给页面上每个角落都绑上事件。鼠标一点,菜单弹出来;手一悬停,颜色立马变。愣是觉得,只要逻辑铺得够密,世界就得乖乖按我的套路走。年轻时候谁不这么干过?天真得要命。

后来收拾旧物,翻出本《Flash MX2004宝典》。纸黄得发脆,边角卷得跟咸菜似的。翻开一看,好家伙,密密麻麻全是 on (release) { ... } 这种代码。当年我可被这玩意儿迷得五迷三道。它教你怎么让死板的图形“活”过来,怎么加点交互,别让影片干巴巴地单向播放。那时候觉得真邪门。敲对几行脚本,鼠标左键一按,时间轴“唰”一下就切到下一帧。因果写得明明白白。踩下触发器,结果准时报到。现在回头看,这逻辑骗骗刚入行的小白还行。真下场做过项目的,谁没被浏览器兼容性折磨得怀疑过人生?不过嘛,那时候是真信啊。信得死心塌地。

等真长大了,才咂摸过味儿来。日子压根不按脚本跑。我们总爱自作多情。以为掏心掏肺,就能换回同等的热乎劲儿。以为计划排得再满,生活就能顺着预设的时间轴,稳稳当当往前走。地铁里,工位上,甚至自家饭桌前,谁心里没绑着一堆“交互事件”?我递句问候,你就得接茬。我按个开关,生活就该亮绿灯。现实呢?对话框发出去,对面死寂一片。精心盘了半小时的周末局,最后就换来一句轻飘飘的“随便”。连个报错弹窗都懒得弹。跳转提示也没有。空气里凭空多出的一大块空白,硌得人心里直发慌。其实吧,未必是生活故意跟你作对。多半是咱们的预期管理,出了大问题。

那会儿我还傻。非觉得书里死磕的“交互性”,套在真人关系里也能行。人的情绪哪是按钮?连个标准触发器都没有。你熬夜调了一整天的动作,可能就因为对方今早没睡醒,或者手机刚好欠费,直接石沉大海。我们总爱把自个儿的人生,包装成个精密动画工程。分层,打关键帧,死抠脚本。生怕哪一帧卡了壳。可生活偏不。它就爱在这些严丝合缝的图层外头,硬生生留出大段没法预演的空白。咱们怕死这块空白。总觉得没填满就是搞砸了。其实人家那叫留白。是喘气儿的地界儿。说句不讨喜的大实话,成年人的交情,十有八九都是单向广播。你非得指望每次发声都有回音,最后伤的只能是自己。

我以前也轴。哪儿没对上号,就死磕自个儿“脚本”是不是写岔了。一遍遍调试,重发,找补。后来才捋明白。那些看着失控的瞬间,根本不是系统出了bug。是人家压根没打算让你掌控。有些交互,本来就是单向输出。有些点击,这辈子都等不来回弹。允许事儿不按套路出牌。允许别人的沉默,就只是沉默。别总往自己脸上贴“错误提示”的标签。这关,才是成年人最头疼的“交互动画”。有人可能要嘀咕,这不就是摆烂吗?我倒觉得未必。不较劲,才腾得出手,接住生活偶尔扔过来的球。

书里写发布影片的步骤,得把图层全打包,导出成能独立跑的文件。人这一辈子,也差不多。你敲不出天衣无缝的代码,也调不出最丝滑的缓动曲线。文件一旦点发送,它就归别人管了。可能被人误读。可能石沉大海。也可能被你用脚都想不到的一种方式,给接住了。咱们总想把人生剪成个精修版递出去。可生活这玩意儿,压根不吃无损压缩那一套。你发出去的满腔热忱,落到别人眼里,可能连个标点符号的反馈,都挤不出来。

电梯“叮”了一声。门一开,走廊的声控灯滋啦亮了一下,又慢吞吞暗下去。我把手机往兜里一揣,懒得再看那个转圈儿的玩意儿。按下按钮,它不一定立马给反馈。这很正常。时间轴自个儿还在往前滚。下一帧长啥样,留点说不清的余地,心里反倒踏实。毕竟,谁还没遇到过几次,点了也没响应的按钮呢?