The Challenge of Interaction in an Animation Tool

ActionScript took shape in Macromedia's Flash development team, initially serving graphics, animation and interactive interfaces on the web. Flash itself built on animation-software work by Jonathan Gay and others, and early versions primarily organized content through a visual timeline. The authoring tool compiled applications into binary files that Flash Player interpreted and ran; browser plugin interfaces embedded the player in webpages.

In his 2001 foreword to a technical book, Gary Grossman recalled joining the team in summer 1998 and beginning with enhanced interactivity on the Flash 4 planning list. Although Flash 3 already had actions for controlling movie clips and buttons, using it to make even a simple tic-tac-toe game was laborious. The year 1998 therefore belongs to the early design background and should not be treated as the release year of the later full language.

References: [1] [5]

Letting Nonprogrammers Write Behaviors

Grossman identified ease of learning and player size as important constraints. Flash 4 used a visual action-editing interface to avoid confronting beginners with a blank code window at the outset. Every language feature also had to be weighed against download costs in low-bandwidth environments. Language design, the authoring interface and player implementation thus continually constrained one another.

Allen Wirfs-Brock and Brendan Eich's language history described the Flash 4 stage as a dynamically typed scripting language evolving from simple actions. In Flash 5, ActionScript became a dialect of ECMAScript's third edition, supporting most statement forms and prototype-based objects. It used the expressions of an existing scripting language to control content in the Flash environment, allowing interactive logic to be written explicitly within a graphics-authoring workflow.

References: [1] [5]

The Product Stages of 1999 and 2000

On May 24, 1999, Macromedia announced Flash 4 during its international user conference in San Francisco, with the press release forecasting North American availability that June. New text input, conditionals and basic mathematical operations were intended for uses such as forms and shopping carts. The company also cited its own shockwave.com interface as an example of elements that could be dragged, collapsed and repositioned. These were features and use cases announced by the vendor at the time; promotional claims of convenience should not be treated directly as independent evaluation findings.

On August 24, 2000, another contemporary press release explicitly announced that Flash 5 was available for download, with boxed products expected in early September. This version targeted both designers and programmers and promoted reusable Smart Clips, which packaged interface elements or multiple-choice interactions in training software for exchange among teams. Language capabilities were thus tied to product distribution, component reuse and collaborative authoring.

References: [3] [4]

How a Button Changes the Screen

The introductory exercise on page 12 of the 2000 Flash 5 ActionScript Reference Guide placed a button and a movie clip named testMC on the stage, with the following action on the button: on (release) { setProperty("testMC", _visible, false); }. When the user released the mouse button, the script set the clip's visible property to false, making it disappear. An event, a target instance and a property change together constituted the interaction.

This code determined how the screen changed after a viewer's action rather than merely playing the timeline in sequence. The manual also explained that Normal mode let users choose actions from a list and fill in parameters, while Expert mode allowed direct text editing. Flash 5 additionally supported user-defined functions with parameters and return values. Beginners could start by setting one clear behavior, then gradually organize repeated logic into reusable code.

References: [2]

Similar to JavaScript, but with Boundaries

ActionScript 1.0 adopted many ECMAScript language forms without preserving identical semantics in every case. The language history noted that it lacked regular expressions and that eval could handle only restricted variable-access expressions, not execute arbitrary strings as programs. Its code targeted Flash Player, so similar syntax did not make it interchangeable without distinction with JavaScript in webpages.

The contemporary manual specified that ActionScript lacked browser-specific objects such as Document and Window. Grossman also explained that compiling arbitrary code at runtime would require including a complete compiler in the player, at too great a cost in size. This trade-off shows that the early language was not abstractly pursuing the largest possible feature set; it chose a manageable implementation among graphical interaction, existing content and a small player.

References: [1] [2] [5]

Later Versions Addressed Larger Programs

ActionScript 2.0, introduced in 2003, added class and interface declarations, type annotations and a mechanism for importing classes from other scripts. According to the language history cited above, type checking primarily occurred during compilation, type information was removed before code generation, and execution still used the 1.0 virtual machine. A change in how programmers wrote code therefore did not necessarily mean that the underlying execution system had been completely replaced.

As applications grew, the team explored new approaches to types and execution. The later ActionScript 3.0 was designed with contributions from Grossman, Jeff Dyer and Edwin Smith and paired with a new virtual machine, AVM2. To accommodate older content, Flash retained AVM1 for running versions 1.0 and 2.0. Early ActionScript elevated actions in an animation tool into scripting, while later versions addressed the organization and execution of large programs. Each stage had its own targets and technical conditions.

References: [5]