com.flagstone.transform
Class FSRemoveObject

java.lang.Object
  extended by com.flagstone.transform.FSTransformObject
      extended by com.flagstone.transform.FSMovieObject
          extended by com.flagstone.transform.FSRemoveObject
All Implemented Interfaces:
java.lang.Cloneable

public class FSRemoveObject
extends FSMovieObject

FSRemoveObject removes an object from the Flash Player's Display List.

An object placed on the display list is displayed in every frame of a movie until it is explicitly removed. Objects must also be removed if its location or appearance is changed using either the FSPlaceObject or FSPlaceObject2 classes.

Attributes
type Identifies the data structure when it is encoded. Read-only.
identifier The unique identifier, in the range 1..65535, of the object.
layer The layer at which the object is placed in the Display List.

Although only one object can be placed on any layer in the display list both the object's unique identifier and the layer number must be specified. The FSRemoveObject class is superseded in Flash 3 by the FSRemoveObject2 class which lifts this requirement allowing an object to be referenced by the layer number it occupies in the display list.

Examples

1. Remove an object.
To remove an object from the display list the object's identifier and the layer number using when the object was placed is used.

 // Place a shape to the display list for one frame.
 movie.add(new FSPlaceObject(shape.getIdentifier(), 1, 400, 400));
 movie.add(new FSShowFrame());
 
 // now remove it.
 movie.add(new FSRemoveObject(shape.getIdentifier(), 1));
 movie.add(new FSShowFrame());
 

2. Move an object.
To move an object it first must be removed from the display list and repositioned at its new location. Adding the object, with a new location, on the same layer, although only one object can be displayed on a given layer, will not work. The object will be displayed twice.

 // Add the shape to the display list.
 movie.add(new FSPlaceObject(shape.getIdentifier(), 1, 400, 400));
 movie.add(new FSShowFrame());
 
 // Move shape to a new location, removing the original so it does not get displayed twice.
 movie.add(new FSRemoveObject(shape.getIdentifier(), 1));
 movie.add(new FSPlaceObject(shape.getIdentifier(), 1, 250, 300));
 movie.add(new FSShowFrame());
 

History

The FSRemoveObject class represents the RemoveObject tag from the Macromedia Flash (SWF) File Format Specification. It was introduced in Flash 1 and is superseded by the RemoveObject2 tag which was added in Flash 3.


Field Summary
 
Fields inherited from class com.flagstone.transform.FSMovieObject
ButtonColorTransform, ButtonSound, DefineBitsPtr, DefineButton, DefineButton2, DefineFont, DefineFont2, DefineImage, DefineImage2, DefineJPEGImage, DefineJPEGImage2, DefineJPEGImage3, DefineMorphShape, DefineMovieClip, DefineShape, DefineShape2, DefineShape3, DefineSound, DefineText, DefineText2, DefineTextField, DefineVideo, DoAction, EnableDebugger, EnableDebugger2, Export, extendLength, FontInfo, FontInfo2, FrameLabel, Free, Import, Initialize, JPEGTables, length, LimitScript, PathsArePostscript, PlaceObject, PlaceObject2, Protect, QuicktimeMovie, RemoveObject, RemoveObject2, SerialNumber, SetBackgroundColor, ShowFrame, SoundStreamBlock, SoundStreamHead, SoundStreamHead2, StartSound, TabOrder, type, VideoFrame
 
Constructor Summary
FSRemoveObject(FSCoder coder)
          Construct an FSRemoveObject object, initialising it with values decoded from an encoded object.
FSRemoveObject(FSRemoveObject obj)
          Constructs an FSRemoveObject object by copying values from an existing object.
FSRemoveObject(int anIdentifier, int layer)
          Constructs an FSRemoveObject object that will remove an object with the specified identifier from the given layer in the display list.
 
Method Summary
 void appendDescription(java.lang.StringBuffer buffer, int depth)
          AppendDescription is used to present a string description of the object including all nested objects up to a specified depth.
 void decode(FSCoder coder)
           
 void encode(FSCoder coder)
           
 boolean equals(java.lang.Object anObject)
          Returns true if anObject is equal to this one.
 int getIdentifier()
          Gets the identifier of the object to be removed from the display list.
 int getLayer()
          Gets the layer in the display list where the object will be displayed.
 int length(FSCoder coder)
           
 void setIdentifier(int anIdentifier)
          Sets the identifier of the object to be removed.
 void setLayer(int aLayer)
          Sets the layer in the display list where the object will be displayed.
 
Methods inherited from class com.flagstone.transform.FSMovieObject
getType
 
Methods inherited from class com.flagstone.transform.FSTransformObject
clone, name, toString
 
Methods inherited from class java.lang.Object
finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

FSRemoveObject

public FSRemoveObject(FSCoder coder)
Construct an FSRemoveObject object, initialising it with values decoded from an encoded object.

Parameters:
coder - an FSCoder containing the binary data.

FSRemoveObject

public FSRemoveObject(int anIdentifier,
                      int layer)
Constructs an FSRemoveObject object that will remove an object with the specified identifier from the given layer in the display list.

Parameters:
anIdentifier - the unique identifier for the object currently on the display list.
layer - the layer in the display list where the object is being displayed.

FSRemoveObject

public FSRemoveObject(FSRemoveObject obj)
Constructs an FSRemoveObject object by copying values from an existing object.

Parameters:
obj - an FSRemoveObject object.
Method Detail

getIdentifier

public int getIdentifier()
Gets the identifier of the object to be removed from the display list.

Returns:
the identifier of the object to be removed.

getLayer

public int getLayer()
Gets the layer in the display list where the object will be displayed.

Returns:
the layer number where the object to be removed is displayed.

setIdentifier

public void setIdentifier(int anIdentifier)
Sets the identifier of the object to be removed.

Parameters:
anIdentifier - the unique identifier for the object currently on the display list.

setLayer

public void setLayer(int aLayer)
Sets the layer in the display list where the object will be displayed.

Parameters:
aLayer - the layer in the display list where the object is being displayed.

equals

public boolean equals(java.lang.Object anObject)
Description copied from class: FSMovieObject
Returns true if anObject is equal to this one. Objects are considered equal if they would generate identical binary data when they are encoded to a Flash file.

Overrides:
equals in class FSMovieObject
Returns:
true if this object would be identical to anObject when encoded.

appendDescription

public void appendDescription(java.lang.StringBuffer buffer,
                              int depth)
Description copied from class: FSTransformObject
AppendDescription is used to present a string description of the object including all nested objects up to a specified depth. This method provide a more controlled way of creating a string representation of an object since large objects such as font or shape definitions can contain dozens of nested objects. The representation of the object is appended to the StringBuffer, showing the name of the class and values of the attributes it contains. If the object contains any attributes that are objects then the object graph will be traversed up to the specified depth. If objects are nested at a level less than specified depth then the full string representation of the object is displayed. For objects at the specified depth only the name of the class is displayed. Any objects below this depth are not displayed.

Overrides:
appendDescription in class FSMovieObject
Parameters:
buffer - a StringBuffer to which the description of each object is appended.
depth - the maximum level of nesting up to which objects will be displayed.

length

public int length(FSCoder coder)
Overrides:
length in class FSMovieObject

encode

public void encode(FSCoder coder)
Overrides:
encode in class FSMovieObject

decode

public void decode(FSCoder coder)
Overrides:
decode in class FSMovieObject