Indivision Codebase for Adobe Flash AS 2.0
Joe Miller's ActionScript 2.0 framework for Adobe Flash — a collection of light-weight basic user interface, layout, loading, media, and data classes designed as a foundation for Flash-era projects (mid-to-late 2000s).
Successor to indivision-codebase-as1 — strict superset adding 9 new packages and substantial expansion of existing ones (see AS1 vs AS2).
- Stack: ActionScript 2.0 (Flash MX 2004 / Flash Player 7+).
- Public origin: was published on Google Code Archive at code.google.com/archive/p/indivision-codebase-as2/ before migrating to GitHub.
- State: archived; Flash itself reached end-of-life on December 31, 2020. This codebase is preserved for historical/educational interest and for restoring legacy Flash-era projects that depend on it.
indivision-codebase-as2/
├── README.md
├── classes/
│ ├── com/ ← bundled third-party AS classes
│ │ ├── robertpenner/ ← easing equations
│ │ └── senocular/ ← Path utility
│ └── net/indivision/ ← Indivision's framework (17 packages, 80 classes)
├── documentation/ ← JavaDoc-style HTML documentation
└── fla_examples/
├── source/ ← runnable .fla demos organized by package
└── deploy/ ← compiled .swf output
The Indivision framework (classes/net/indivision/)
80 classes across 17 packages.
Arrangement methods similar to the Align window available in the Flash IDE.
- Align — align objects to common edges or to a target.
- Axis — single-axis arrangement (X or Y).
- Boundary — defines a rectangular boundary for arrangement.
- Distribute — even spacing distribution.
- Position — direct positioning utility.
- StageManager — manages stage-relative arrangement; auto-rearranges on stage resize.
- StagePosition — anchor objects to stage positions (corners, edges, center).
User-interaction controls (buttons, scrollbars, menus).
- AbstractButton — base class for all button variants.
- AnimatedButton — button with frame-based animations.
- CustomButton, CustomButtonStyle — fully customizable button + its style descriptor.
- LabelButton, LabelButtonStyle — text-labeled button + its style descriptor.
- LinearButton — toolbar-style button arrangement.
- MenuBase — generic menu component, extends MovieClipDispatcher.
- ScrollBar — scrollbar component, extends MovieClipDispatcher.
- Scrub, IScrubbable — media-style scrubber control + interface for scrubbable targets.
Foundation classes used throughout the codebase.
- AbstractDispatcher — base class for event-dispatching objects.
- AbstractMovieClip — base class for AS2 movieclip-backed objects (works around AS2 limitations on extending MovieClip).
- MovieClipDispatcher — combines AbstractMovieClip + AbstractDispatcher for stage-attached event-dispatching components.
Data parsing and proxy classes.
- DataProviderProxy — bridges arrays/objects into the format expected by MX DataProvider-compatible components.
- XMLConstruct — XML-to-Flash-Object parser modeled after XML / XMLNode structure. Lets you author XML and have it materialize as a tree of typed Objects.
- XMLConstructNode — node in the XMLConstruct parse tree.
Debug utilities.
- Trace — wrapper around trace() with optional formatting (timestamps, source labels).
- JavaAlert — fires getURL("javascript:alert(...)") from Flash for browser-side debug alerts (useful when Flash debugger isn't available).
Visual effects that can be applied interchangeably to any object via a common API.
- AbstractEffect — base interface for effects.
- Fade — alpha-fade transition.
- MaskWipe — mask-based wipe transition.
- Reveal — reveal-style transition.
- TweenEffect — base for tween-driven effects.
Non-interactive visual elements (visuals that don't capture input).
- Animation — animation playback element.
- Bullet — visual bullet-point graphic.
- ExpandingFrame — frame that resizes to fit its content.
- LabelBase — text-label base class.
Event-broadcasting tools for common Flash event patterns. Streamlines onEnterFrame handling for efficiency.
- FrameEventBeacon — dispatches per-frame onEnterFrame events to subscribers (single shared frame handler instead of per-clip).
- KeyBeacon — dispatches key-press events to subscribers.
- StageBeacon — dispatches stage-resize events to subscribers.
Layout arrangements that apply interchangeably to an array of objects. Like CSS Flexbox / Grid for AS2.
- AbstractLayout — base class for layouts.
- Column — single-column layout.
- Grid — N×M grid layout.
- IArrangeable — interface for objects that can be arranged.
- Row — single-row layout.
External-asset loading with extras.
- LoadQueue — sequential queue of load operations.
- PerformanceLoader — loader with bandwidth profiling and background-caching.
Media abstraction layer. Provides a common API across Flash's various media types (audio, video, images) so controls like a scrubber or universal media player can work uniformly.
- AbstractMedia — base class for all media types.
- AudioManager — manages multiple audio streams (mixer-style).
- FLVMedia — Flash video (.flv) wrapper.
- Image — bitmap/JPG/PNG wrapper.
- LinearMedia — base for timeline-based media (audio, video).
- MP3 — MP3 audio wrapper.
- SoundClip — simple flash.media.Sound wrapper for triggered SFX.
- StaticMedia — base for non-timeline media (images).
- VideoClip — generic video wrapper.
Low-level routines for common tasks (functional-style array operations).
- AbstractAnalysis — base class for analysis ops.
- Extract — extract a subset from a collection.
- Find — find an element in a collection.
- Iteration — generic iteration over a collection.
- Quantity — count operations.
- Run — apply a function to every element.
- Set — set operations (union, intersection, difference).
Generic project-foundation classes.
- AbstractXMLProject — base class for XML-configuration-driven projects.
Shape primitives + style descriptors. Procedural drawing API.
- AbstractShape — base class for procedural shapes.
- Backdrop — fullscreen background fill shape.
- FillStyle — fill style descriptor (color + alpha + gradient).
- LineStyle — stroke style descriptor.
- RectangleShape — procedurally-drawn rectangle.
- ShapeStyle — combined fill + line style.
Text-display utilities.
- HidingDefaultText — text field that hides placeholder text on focus (like HTML's placeholder attribute, before that pattern was native).
Light-weight tween system. Extensible easing of object properties.
- FrameMotion — frame-based motion tween.
- FrameTween — frame-based property tween.
- Motion — time-based motion tween.
- MotionPath — tween along a path (uses senocular.Path).
- Move — simple move tween.
- PropertyTween — generic property-value tween.
- TweenBase — base class for all tweens.
Generic utilities.
- GlobalHitTest — collision detection across nested timelines.
- Group — manages a logical group of movieclips.
- MovieClipStack — stack-based movieclip allocation/recycling.
- Timer — setInterval-based timer wrapper.
Bundled (in classes/com/)
| Library |
Path |
Purpose |
License |
| Robert Penner Easing |
classes/com/robertpenner/easing/ |
Easing equations: Back, Bounce, Circ, Cubic, Elastic, Expo, Linear, Quad, Quart, Quint, Sine |
De-facto open (Penner published under BSD-like terms) |
| Senocular Path |
classes/com/senocular/Path.as |
Path-following math utility (used by net.indivision.tween.MotionPath) |
No formal header; historically free use |
Imported but not bundled (Flash standard libraries)
Indivision code imports these from Macromedia's Flash MX 2004 runtime:
- mx.events.EventDispatcher — Flash's standard event dispatcher.
- mx.utils.Delegate — function-binding helper for setting this in callbacks.
- mx.video.NCManager, mx.video.VideoPlayer — used by net.indivision.media.FLVMedia.
These ship with the Flash IDE / Flash Player runtime; no additional install needed.
Indivision code's actual third-party imports
A scan of import statements in classes/net/indivision/ shows the framework only imports:
- Other net.indivision.* modules
- com.senocular.Path (used by net.indivision.tween.MotionPath)
- mx.* standard libraries listed above
com.robertpenner.* is bundled for availability to developers building on this codebase, but Indivision code itself doesn't import it.
FLA examples (fla_examples/)
Runnable demos for ~30 classes/concepts. Each in fla_examples/source/<package>/<DemoName>/<DemoName>.fla with compiled .swf output in fla_examples/deploy/. Packages with demos:
- arrange: Axis, StageManager
- control: AnimatedButton, CustomButton, LabelButton, LinearButton, MenuBase, ScrollBar
- data: XMLConstruct
- effect: Fade, MaskWipe, Reveal
- element: Animation, ExpandingFrame, LabelBase
- event: KeyBeacon, StageBeacon
- layout: Grid
- load: LoadQueue, PerformanceLoader
- media: AudioManager, FLVMedia, MP3, SoundClip
- operation: operation (general demo)
- shape: RectangleShape
- text: HidingDefaultText
- tween: FrameMotion, FrameTween, Move, tween
- util: Group, Timer
AS2 is the strict superset of indivision-codebase-as1 (28 classes / 8 packages). New in AS2 vs AS1:
| Package |
AS1 |
AS2 added |
| core |
— |
AbstractDispatcher, AbstractMovieClip, MovieClipDispatcher |
| data |
— |
DataProviderProxy, XMLConstruct, XMLConstructNode |
| effect |
— |
AbstractEffect, Fade, MaskWipe, Reveal, TweenEffect |
| layout |
— |
AbstractLayout, Column, Grid, IArrangeable, Row |
| load |
— |
LoadQueue, PerformanceLoader |
| operation |
— |
AbstractAnalysis, Extract, Find, Iteration, Quantity, Run, Set |
| project |
— |
AbstractXMLProject |
| text |
— |
HidingDefaultText |
| tween |
— |
7 classes (FrameMotion, FrameTween, Motion, MotionPath, Move, PropertyTween, TweenBase) |
| arrange |
1 class (Position) |
+ 6 (Align, Axis, Boundary, Distribute, StageManager, StagePosition) |
| media |
1 class (SoundClip) |
+ 8 (AbstractMedia, AudioManager, FLVMedia, Image, LinearMedia, MP3, StaticMedia, VideoClip) |
| element |
2 classes |
+ 2 (Animation, ExpandingFrame) |
| shape |
4 classes |
+ 2 (LineStyle, ShapeStyle) |
| util |
3 classes |
+ 1 (GlobalHitTest) |
If you're starting new Flash work that needs an Indivision-style framework, use AS2 — AS1 is preserved for historical interest and for restoring legacy AS1-targeted projects.
To compile, you need Flash MX 2004 or later (Flash CS3-era recommended for the most-tested setup). Open any .fla from fla_examples/source/<package>/<DemoName>/. Classpath should include:
Publish Settings > Flash > ActionScript Version should be ActionScript 2.0.
For programmatic builds, use the mtasc (Motion-Twin ActionScript 2 Compiler) or Adobe's mxmlc (Flex SDK).