Thursday, September 16, 2010

Welcome to DelphiFlash.com for new articles

Dear readers! Articles about Delphi + Flash are now also published on delphiflash.com website. Please visit Articles section on delphiflash.com where you will find new articles and more useful information about Delphi + Flash technologies. Feel free to comment articles on our website!

Monday, December 8, 2008

Visual objects

Flash supports a number of built-in visual objects. Nevertheless, the number of varieties is limited, that's why in most cases needed elements, e.g. Graphic User Interface, are created by combining a few standard objects. All the standard objects are defined in DefineXXX. They are: Shape, MorphShape, Static Text, Dynamic Text, Button, Video and Sprite.

Pay attention to the fact that there is no Image object. To display an image, it must be used as a fill for rectangular shape.


Unique CharacterID

Each visual object has its own unique CharacterID – a number of the word type, i.e. value between 0 and $FFFF. If you create object by yourself, you have to ensure its uniqueness. Uniqueness is needed to let player definitely understand what object to use at processing tagPlaceObject.

When it's needed to combine a few SWF, the first task is to ensure the uniqueness of these CharacterIDs, otherwise some objects won't be displayed. To do that, it's necessary to redefine all values in one SWF by changing existing values to values which is known to be free.


Objects names

As I've mentioned before, object name is set in tagPlaceObject, it's obligatory to specify CharacterID here. It's possible to create a few copies of one object with different names. Again, at combining two SWFs, it's necessary to ensure names uniqueness. As a rule, names are used in ActionScript for managing these copies, that's why in case of renaming objects it's necessary to make corresponding corrections in ActionScript.

Monday, November 17, 2008

Frame, scene or display list

As I said before, the displaying happens when there is a ShowFrame tag in SWF. To display a visual object, one should at first describe it (DefineXXX tags), and then place it on a needed depth with the help of PlaceObject tags. One object can be placed many times, so we have cloning effect. Depending on PlaceObject tag parameters, the instances of a visual object can look absolutely different. The instances are displayed until they are forcibly removed by RemoveObject tag. That allows to determine, place and remove instances of objects in different frames.

Looking at this scheme, one can answer the question what objects are displayed in what frame – one have to make a list of all PlaceObject before the current frame and except those ones which were removed by RemoveObject tag. One should also take into account that PlaceObject can have a flag PlaceFlagMove which indicates that the occupied depth must be cleared, i.e. it's analogous to RemoveObject in one tag.


PlaceObject review

It's the main tag used to indicate what object, where and how should be displayed. As the SWF format was developed, additional parameters were added to this tag. Now there are three "editions": tagPlaceObject, tagPlaceObject2 and tagPlaceObject3.

Key parameters:

  • Depth – the depth where an object is placed. The lager the value is, the "higher" an image is. As this parameter can't be more than 2 bytes, the maximum value is 65535. To be displayed correctly, there shouldn't be other objects on a depth, otherwise one have to set PlaceFlagMove as true.
  • CharacterId – identifier of an existing object.
  • Name – name of object instance. It can be used in ActionScript for programming animation and interactivity.
  • Matrix – the group of parameters for geometric transformation. It includes TranslateX and TranslateY to indicate position (nought in the top left corner), ScaleX and ScaleY for reducing or enlarging, SkewX and SkewY for bevels and rotations.
  • ColorTransform – the group of parameters for color transformation. It includes addR, addG, addB and addA for changing color components by adding specified values; multR, multG, multB, multA for changing color components by multiplying them by specified values.

By setting different parameters in different frames, we have animation. For instance, by changing Translate value, one can create movement. By changing addA or multA, one creates appear and disappear effects.