Beginning the Coding Process
We have our XML format mapped out. Now its just a matter
of interpreting the XML so that Flash will know how to
construct a menu based on information provided. This is
often the more difficult part in dealing with XML. It's
not too hard to write the XML or even look at it with
your own eyes to tell what's going on in there. But once
you start to try to extract its contents using some
programming language like Actionscript, you can start to
get confused. If you're brand new to using XML in Flash,
you may first want to read some other beginner XML
tutorials here on the site to help you get acquainted.
Otherwise, we'll just jump right on in.
Loading and Interpreting XML
Loading an XML file is easy. The concept of having to
wait for it to load can be difficult. Often people want
to use it directly after the load command which is just
not possible. Being an external file, it will take some
time, frames even, to completely load into the Flash
player. Only then can it be used. Understanding that, we
know enough to not have any actions aside from the
loading of the XML until the onLoad event called in
receiving file. Because of this, and because of
portability and reuse of code, everything done will be
based around a series of functions that will be called
when needed.
Once loaded, there will be 2 basic types
of information needed from the XML. This includes the
node name for each node and values of the attributes of
that node (i.e. name, action and variables). Whenever a
particular menu is created, whether it be the main menu
or a submenu these values will need to be extracted and
used in the creation of a menuitem movieclip. Before
doing so, however, we'll need to get to all the XML
nodes, or at least those associated with whatever menu
we're dealing with at the time. The best way of doing
this is to simply loop through all the childNodes
of a particular node in the XML object. This of course
will start at the first node in the XML which is the
main menu. This is represented as
- xmlObject.firstChild
Child nodes are given through that (or
any) node's childNodes array. This is what is looped
through in order to reach all menu items for any menu
node.
- xmlNode.childNodes
For name of a node, we can use the
nodeName property.
- xmlNode.nodeName
Attributes of a node are extracted from
an attributes object contained within the Flash node.
The values of the attributes can then be retrieved by
specifying the attribute by its name within the
attributes object.
- xmlNode.attributes.name
- xmlNode.attributes.action
- xmlNode.attributes.variables
With that, here's an Actionscript
example looping through and showing the needed values of
all the contents, or items, of the main menu (the first
menu node) as specified in the XML file.
- xmlNode = xmlObject.firstChild;
- for (var i = 0; i < xmlNode.childNodes.length;
i++){
- // either "menu" or "item"
- xmlNode.childNodes[i].nodeName;
- // name of the item
- xmlNode.childNodes[i].attributes.name;
- // action of the item
- xmlNode.childNodes[i].attributes.action;
- // variables for that action
- xmlNode.childNodes[i].attributes.variables;
- }
Not too hard right? This is probably the hardest
part, just extracting the needed info from the XML file.
With this, its time to get Flash to put it to work. The
XML information is just text at this point. Further
Actionscript will be needed to make it all function.