A frame’s children are the objects on the stage: instances of library symbols, text fields, bitmaps, video and so on. All of them start with the object part, and each has the revision of its own fields next. These layouts are those of the JPEXS FLA converter, checked against thousands of real files.
Symbol instances
CPicSymbol: a graphic symbol placed on the stage. CPicShapeObj
is read the same way; what sets it apart from a plain instance is not established.
Movie clips and buttons add their own fields below.
| Field | Present from | Meaning |
|---|---|---|
| object part | always | Its children, when it has any. |
| u8 revision | always | 0x0E in Flash MX 2004, 0x13 in Flash 8 and CS3, 0x16 in CS4. |
| 6 × s32 | always | The placement matrix. |
| u16 | always | The first frame to show. |
| u16 | 2 | Loop mode: 0 loop, 1 play once, 2 single frame. |
| colour | 7 (earlier: 3) | The colour transform. |
| effect words | 4 to 6 | A u16 type, s16 percent, u32 colour (held inside the colour transform from revision 7). |
| CString | 6 | A legacy name. |
| u32 | always | The library item: the libraryId of a CDocumentPage. |
| legacy block | 8 and 9 only | Component parameters from Flash MX days: CStrings, a property list and more. |
| u8 + effect | 0x0B | Whether a timeline effect follows, and its strings and parameters. |
| u8 + persistent | 0x0C | Whether persistent data follows (see Contents). |
| u8 | 0x0E | Extensible (locked) flag. |
| u8 + filters | 0x0F | Whether filters follow. |
| u8 | 0x10 | Blend mode. |
| u16 | 0x11 | The selected effect’s index. |
| 16 × f32, 3 × f64 | 0x14 | The 3D matrix, then rotation about x, y, z in degrees. |
| 3 × s32 | 0x15 | The 3D centre point in twips. |
| u16 + n × (u16, u16) | 0x16 | Per-frame symbol settings of a tween: loop mode and first frame. |
| u16, u32, u32, u32 | 0x17 | Bitmap render mode, 32-bit colour flag, background colour and is-visible. |
Movie clips and buttons
A movie clip is a CPicSprite: all of the above, then
| Field | Present from | Meaning |
|---|---|---|
| u8 revision | always | 6 in Flash MX, 8 from Flash 8. |
| actions | 2 | An ActionScript block with its onClipEvent handlers. |
| CString | always | The instance name. |
| properties | 3 | A property list: the instance’s component parameters. |
| accessibility | 6 | The accessibility settings. |
| u32 | 5 | Property inspector state. |
| u8, u32, CString | 8 | Component XML: its revision, a unique identifier and the XML. |
A button is a CPicButton: all of a symbol instance, then a u8 revision
(0x0B in this format); from revision 5 an ActionScript block holding its
on handlers; from 4 a u8 track-as-menu flag; from 6 the instance name; from
8 the accessibility settings.
A screen (Flash MX 2004’s slides and forms) is a CPicScreen: a movie clip
with a u8 revision, two u32 values, from revision 3 another u32, then the screen’s
name.
Colour transform
From instance revision 7, a u8 revision (1), then eight s16: alpha multiplier and offset, then the same for red, green and blue (multipliers are 8.8 fixed point; offsets are 0 to 255), then a u16 effect type (1 brightness, 2 tint, 3 advanced, 4 alpha), s16 percent (×100) and a u32 colour.
Blend modes
| Value | Mode | Value | Mode |
|---|---|---|---|
| 1 | normal | 8 | add |
| 2 | layer | 9 | subtract |
| 3 | multiply | 10 | invert |
| 4 | screen | 11 | alpha |
| 5 | lighten | 12 | erase |
| 6 | darken | 13 | overlay |
| 7 | difference | 14 | hardlight |
The value 0 is not assigned to any mode.
Filters
A u32 count, then each filter as a u8 type and its fields. Fields are little-endian 32-bit words or floats unless stated.
| Type | Filter | Fields |
|---|---|---|
| 0 | Drop shadow | The shadow record, below. |
| 1 | Blur | u8 revision. 1: colour, blurX, blurY. 2: blurX, blurY, state, quality. 3: the shadow record. |
| 2 | Glow | u8 revision. 1 or 2: colour, blurX, inner, knockout; at 2 also state and quality. 3: the shadow record. |
| 3 | Bevel | u8 revision. 2: angle, colour, blurX, distance, inner, knockout, state, quality, u8, highlight colour, u32, full. 3: the shadow record, highlight colour, full. |
| 4 | Gradient glow | The gradient record, below. |
| 6 | Adjust colour | u8 revision; from 1 the state, and floats brightness, contrast, saturation, hue. |
| 7 | Gradient bevel | u8 revision; from 1 the gradient record. |
Type 5 is not used. The shadow record: a u8 revision (up to 4); at revisions 1 and 2, angle (radians, float), colour, blur X, distance, inner and knockout (u32), and at 2 the state and quality; at 3 and later the state, colour, distance, blur X and Y, angle (floats), inner, knockout, quality and strength (a percentage, u32), and at 4 hide object. The state is a u8 revision and, at 1, a u32 enabled flag.
The gradient record: a u8 revision; at 1, the shadow record, a u32 stop count (up to 15), a u32 value, a u32 full flag, then each stop as a u32 ratio (0 to 255) and a u32 colour.
Text fields
CPicText: the object part, a u8 revision (up to 14), the matrix, four s32
for the bounds (left, right, top, bottom, in twips), a u8 auto-expand flag, then:
| Field | Present from | Meaning |
|---|---|---|
| u8 | 3 | Not established. |
| flags | 4 | u16 at revision 4, u32 from 5. Bit 0 set for input and dynamic text, bit 1 for dynamic; 16 multiline, 8 wrap (24: multiline with wrap, 16: no wrap), 4 password; 0x2000 a font library name follows; 0x4000 a default style follows; 0x20000 device fonts. |
| u16 | 4 | Maximum characters. |
| CString | 4 | The variable name. |
| CString | flag | The font library name. |
| u8 | 14 | Embed variant glyphs. |
| style | flag | The default style. |
| runs | always | Text runs, each a u16 character count (up to 0x202), a style and the characters; ended by a count of 0. A style of revision 10 or later holds UTF-16, otherwise single bytes. |
| CString | 6 | The instance name. |
| accessibility | 9 | See below. |
| u32 | 8 | Scrollable. |
| CString | 11 | Localization string ID. |
| CString | 12 | Embedded character ranges. |
| filters, u16 | 13 | Filters as above, and the selected effect’s index. |
A text style: a u8 revision (below 2, no more follows), then:
| Field | Present from | Meaning |
|---|---|---|
| u16 | 2 | Size in twips. |
| string | 2 | Font family. A style string is a byte count then the text, UTF-16 from revision 10; a CString from revision 15. |
| string, u32 | 14 | Font face and flags. |
| u32 | 2 | The colour. |
| u8 | 2 | Pitch and family (Windows LOGFONT). |
| u8 | 2 | Character set (Windows LOGFONT). |
| u8 | 2 | Bold. |
| u8 | exactly 2 | Bits: 1 italic, 2 use screen spacing, 4 no auto-kern, 0x18 character position. |
| 4 × u8 | 3 | Italic, use screen spacing, auto-kern, character position (0 normal, 1 superscript, 2 subscript). |
| u8 | 2 | Alignment: 0 left, 1 right, 2 centre, 3 justify. |
| 5 × s16 | 2 | Line spacing, indent, left margin, right margin, letter spacing (twips). |
| string | 5 | URL. |
| 3 × u8 | 6 | Vertical, right-to-left, rotation flags. |
| u8 | 8 | Bitmap rendering. |
| string | 7 | URL target (after bitmap rendering in the file). |
| u8 + u8 + floats | 11 | Anti-aliasing: a u8 revision, the mode (0 standard, 1 advanced, 2 custom), at revision 1 three s32, then float thickness and sharpness. |
| string | 12 | URL override. |
| string, u32 | 13 only | A legacy font name and value. |
Accessibility settings
A u32 revision (0 means nothing else follows). Otherwise a u32 of flags, then CStrings for the name, description and shortcut; at revision 2 of a Unicode-aware record, tab index and a reserved string; then u32 force-simple and u32 auto-labelling.
Component parameter lists
A u8 revision (up to 2), a u32 count, then entries. Revision 0 entries are a u32 type, a CString name and a CString value. Revisions 1 and 2 are a property: a u8 revision, CString name, a value record, from revision 1 a CString variable name and a 17-byte identifier, from revision 3 a category and verbosity. A value record: a u8 revision, u16 type (17 adds a u16; 13 a table of named columns and rows from revision 4), a u32 count, a u32 selected index, a u32 flag that says whether entries are named, then for each entry an optional name, a value and (from revision 6) a u16 type; from revision 8 a u32 and that many bytes of raw data. Revision 2 of the list ends with a u32, parameters-are-new.
Other objects
| Class | Is | Fields after the object part |
|---|---|---|
CPicBitmap | A bitmap on the stage | u8 revision (up to 2), matrix; at 0 an inline raster, from 1 a u16 media number; from 2 a u8 and persistent data if set. |
CPicVideoStream | Embedded video | u8 revision (up to 4), matrix, four s32 bounds, a u8, a CString, the instance name, from 3 a u32 present flag, then a u16 media number when present. |
CPicVideo | Linked video | u8 revision, matrix, a u16 media number. |
CPicSwf | A compiled clip | u8 revision (up to 7), matrix, u32 present flag and u16 media number, from 2 an ActionScript block, from 3 the instance name, from 4 properties, from 5 accessibility, from 6 component XML, from 7 a u8. |
CPicOle | An OLE object | u8 revision, matrix, four s32 bounds, a u16 item number; 0 means an object (CSketchCntrItem) follows. |
CPicTLFText | TLF text | As CPicASObj, then a u8, two CStrings (the localization id and the markup) and, for each child of the object part with an identifier, a u32. |
CPicASObj, CPicThreeDObject | Runtime or 3D objects | u8 revision (up to 5), matrix, four s32 bounds, class name and source as CStrings; from 2 filters, selected effect, 3D matrix and rotation; from 3 blend mode; from 4 colour transform; from 5 relation pairs (u32 and identifier). |
CPicFont | Font reference | A u8 mode, then a u16 font number if non-zero, otherwise a font record. |
CPicSoundCreator | Sound on the stage | A u8 revision and a u16 media number, with no object part. |
CCommandObj | Generator command | u8 revision, matrix, four s32 bounds, the command as a CString; from 1 a display label. |
CPicTempClipboardObj | Clipboard placeholder | u8 revision and a matrix. |
All of these appear only rarely. The class names are Flash’s own, as written in the files; the JPEXS project read them from a large set of documents, and the explorer reads them all, but what the bytes marked “not established” do is not publicly known.