TITLE:Chapter 4: The_Display_List #contents * The Display List [#The_Display_List] - Displaying a frame of a SWF file is a three-stage process: - 1. Objects are defined with definition tags such as DefineShape, DefineSprite, and so on. Each object is given a unique ID called a character, and is stored in a repository called the dictionary. - 2. Selected characters are copied from the dictionary and placed on the display list, which is the list of the characters that will be displayed in the next frame. - 3. Once complete, the contents of the display list are rendered to the screen with ShowFrame. ... ** Clipping layers [#Clipping_layers] ** Using the display list [#Using_the_display_list] ** Display list tags [#Display_list_tags] *** PlaceObject [#PlaceObject] - The PlaceObject tag adds a character to the display list. - The CharacterId identifies the character to be added. -The Depth field specifies the stacking order of the character. - The Matrix field species the position, scale, and rotation of the character. - If the size of the PlaceObject tag exceeds the end of the transformation matrix, it is assumed that a ColorTransform field is appended to the record. - The ColorTransform field specifies a color effect (such as transparency) that is applied to the character. The same character can be added more than once to the display list with a different depth and transformation matrix. - %% NOTE %% (これ、何処からコピーした?) -- %% If a character does not change from frame to frame, you do not need to replace the unchanged character after each frame.%% - NOTE -- PlaceObject is rarely used in SWF 3 and later versions; it is superseded by PlaceObject2 and PlaceObject3. - The minimum file format version is SWF 1. - PlaceObject | Field | Type | Comment |h | Header |RECORDHEADER | Tag type = 4 | | CharacterId | UI16 | ID of character to place | | Depth | UI16 | Depth of character | | Matrix | MATRIX | Transform matrix data | | ColorTransform (optional) | CXFORM | Color transform data | *** PlaceObject2 [#PlaceObject2] - The PlaceObject2 tag extends the functionality of the PlaceObject tag. - The PlaceObject2 tag can both add a character to the display list, and modify the attributes of a character that is already on the display list. - The PlaceObject2 tag changed slightly from SWF 4 to SWF 5. - In SWF 5, clip actions were added. - The tag begins with a group of flags that indicate which fields are present in the tag. - The optional fields are CharacterId, Matrix, ColorTransform, Ratio, ClipDepth, Name, and ClipActions. - The Depth field is the only field that is always required. - The depth value determines the stacking order of the character. - Characters with lower depth values are displayed underneath characters with higher depth values. - A depth value of 1 means the character is displayed at the bottom of the stack. - Any given depth can have only one character. - This means a character that is already on the display list can be identified by its depth alone (that is, a CharacterId is not required). - The PlaceFlagMove and PlaceFlagHasCharacter tags indicate whether a new character is being added to the display list, or a character already on the display list is being modified. - The meaning of the flags is as follows: ■ PlaceFlagMove = 0 and PlaceFlagHasCharacter = 1 - A new character (with ID of CharacterId) is placed on the display list at the specified depth. - Other fields set the attributes of this new character. ■ PlaceFlagMove = 1 and PlaceFlagHasCharacter = 0 - The character at the specified depth is modified. - Other fields modify the attributes of this character. - Because any given depth can have only one character, no CharacterId is required. ■ PlaceFlagMove = 1 and PlaceFlagHasCharacter = 1 - The character at the specified Depth is removed, and a new character (with ID of CharacterId) is placed at that depth. - Other fields set the attributes of this new character. - For example, a character that is moved over a series of frames has PlaceFlagHasCharacter set in the first frame, and PlaceFlagMove set in subsequent frames. - The first frame places the new character at the desired depth, and sets the initial transformation matrix. - Subsequent frames replace the transformation matrix of the character at the desired depth. - The optional fields in PlaceObject2 have the following meaning: - ■ The CharacterId field specifies the character to be added to the display list. -- CharacterId is used only when a new character is being added. -- If a character that is already on the display list is being modified, the CharacterId field is absent. - ■ The Matrix field specifies the position, scale and rotation of the character being added or modified. - ■ The ColorTransform field specifies the color effect applied to the character being added or modified. - ■ The Ratio field specifies a morph ratio for the character being added or modified. -- This field applies only to characters defined with DefineMorphShape, and controls how far the morph has progressed. -- A ratio of zero displays the character at the start of the morph. -- A ratio of 65535 displays the character at the end of the morph. -- For values between zero and 65535 Flash Player interpolates between the start and end shapes, and displays an inbetween shape. - ■ The ClipDepth field specifies the top-most depth that will be masked by the character being added. -- A ClipDepth of zero indicates that this is not a clipping character. - ■ The Name field specifies a name for the character being added or modified. -- This field is typically used with sprite characters, and is used to identify the sprite for SetTarget actions. -- It allows the main file (or other sprites) to perform actions inside the sprite (see “Sprites and Movie Clips” on page 231). ■ The ClipActions field, which is valid only for placing sprite characters, defines one or more event handlers to be invoked when certain events occur. - The minimum file format version is SWF 3. (以下、フィールド詳細) *** PlaceObject3 [#PlaceObject3] *** ClipEventFlags [#ClipEventFlags] *** RemoveObject [#RemoveObject] *** RemoveObject2 [#RemoveObject2] *** ShowFrame [#ShowFrame] |