动画工具中的交互难题

ActionScript形成于Macromedia的Flash开发团队,最初服务于网页中的图形、动画和交互界面。Flash本身建立在乔纳森·盖伊等人的动画软件工作之上,早期主要通过可视化时间轴组织内容。制作工具把应用编译成二进制文件,再由Flash Player解释运行;播放器通过浏览器的插件接口嵌入网页。

加里·格罗斯曼在2001年为技术书所写的序言中回忆,他于1998年夏加入团队,开发起点是Flash 4规划表中的增强交互功能。当时Flash 3虽有控制影片片段和按钮的动作,用它制作简单井字棋游戏仍很费力。1998年由此对应早期设计背景,不能直接当作后来完整语言的发布年份。

参考:[1] [5]

让非程序员也能编写行为

格罗斯曼把易上手和播放器体积列为重要约束。Flash 4采用可视化动作编辑界面,避免让初学者一开始就面对空白代码窗口;每项语言能力还须考虑低带宽环境中的下载成本。这使语言设计、制作界面与播放器实现始终相互牵制。

艾伦·沃夫斯—布罗克和布兰登·艾克的语言史研究将Flash 4阶段描述为从简单动作演化出的动态类型脚本语言。到Flash 5,ActionScript转向ECMAScript第三版的方言,支持多数语句形式和基于原型的对象。它使用已有脚本语言的表达方式,去控制Flash环境中的内容;这种结合使交互逻辑可以在图形制作流程中被明确写出。

参考:[1] [5]

1999与2000年的产品阶段

1999年5月24日,Macromedia在旧金山国际用户会议期间公布Flash 4,新闻稿预计同年6月在北美供应。新增文本输入、条件判断和基本数学运算,面向表单与购物车等用途。公司还以自己的shockwave.com界面为例,描述可拖动、折叠和重新定位的元素。这些是当时厂商公布的功能与使用案例,不能把宣传中的便利性直接当作独立测评结论。

2000年8月24日,另一份同期新闻稿明确宣布Flash 5可供下载,盒装产品预计9月初供应。这一版同时面向设计者和程序开发者,并推广可复用的Smart Clips,把界面元素或训练软件中的选择题交互封装起来供团队交换。语言能力由此与商品发行、组件复用和协作制作连在一起。

参考:[3] [4]

一个按钮如何改变画面

2000年《Flash 5 ActionScript Reference Guide》第12页给出的入门练习,是把一个按钮与名为testMC的影片片段放到舞台上,在按钮中设置:on (release) { setProperty("testMC", _visible, false); }。用户释放鼠标按钮时,脚本把该片段的可见属性改为假,使它消失。事件、目标实例和属性修改共同构成了这段交互。

这段代码处理的是观众操作后画面怎样变化,而非只让时间轴依次播放。手册另说明,普通模式可从列表选择动作并填写参数,专家模式则允许直接编辑文本;Flash 5还支持带参数和返回值的自定义函数。初学者可先设置一个明确行为,再逐步把重复逻辑组织成可复用代码。

参考:[2]

接近JavaScript仍有边界

ActionScript 1.0采用ECMAScript的许多语言形式,却没有逐项保持相同语义。语言史研究指出,它不支持正则表达式,eval也只能处理受限的变量访问表达式,不能把任意字符串当程序执行。代码以Flash Player为运行目标,因此相似语法并不意味着它能与网页里的JavaScript无差别互换。

同期手册列明,ActionScript没有浏览器专属的Document、Window等对象。格罗斯曼还解释,若要在运行时编译任意代码,须把完整编译器纳入播放器,体积代价过高。这个取舍说明,早期语言不是抽象地追求功能最多,而是在图形交互、既有内容与小型播放器之间选择可以承受的实现。

参考:[1] [2] [5]

后续版本面对更大的程序

2003年的ActionScript 2.0增加类与接口声明、类型标注以及导入其他脚本中类的机制。依据上述语言史研究,类型检查主要发生在编译阶段,生成代码前类型信息会被移除,运行时仍沿用1.0的虚拟机。因而,程序员写作方式的改变,不能简单等同于底层执行系统已经彻底更换。

随着应用扩大,团队又研究新的类型与执行方案。后来的ActionScript 3.0由格罗斯曼、杰夫·戴尔和埃德温·史密斯参与设计,并与新虚拟机AVM2配合;为兼顾旧内容,Flash继续保留运行1.0和2.0的AVM1。早期ActionScript把动画工具中的动作提升为脚本,后续版本再处理大型程序的组织和执行问题,这些阶段各有对象与技术条件。

参考:[5]