You just survived a painstaking page of getting the thumbnails
to work from the previous page, but how did all of those various steps combine into
getting our thumbnails to work? Hopefully, this page will answer
that and more!
First, let's take a look at out the movie clips and shapes we
added for our photo gallery modification. The following image
(color/opacity added for emphasis)
provides details on the symbols I will be discussing:
As you recall from the first page, the thumbnails were
constrained by boundaries on both the left and right sides.
Those boundaries are determined, not by the hit_left and
hit_right, but primarily by the mask rectangle shape colored
blue in the above image.
Note that the thumbnails are all loaded into the thumbnailMC
movie clip, masking the movie clip with the giant rectangle
ensured that the contents of thumbnailMC, the thumbnail images,
would not be visible unless they were within the boundaries of
the mask rectangle.
So, what role do hit_left and hit_right play? They tell Flash
where the boundaries are for determining whether the row of
thumbnails have actually reached their left or right boundaries.
While the mask rectangle ensured that you only saw thumbnails
within the boundary specified by the mask, the hit_left and
hit_right movie clips help Flash to make sure that you don't
overscroll in either the left or right directions. The scrolling
should stop when the last thumbnail crosses the hit_right
movieclip or when the first thumbnail is to the left of the
hit_left movie clip.
I can't elaborate more on the function of hit_left and
hit_right without taking look at the code. Most of the code
should be familiar to you from the photo gallery tutorial, so
I'll only elaborate on the code that is new to what we are doing
now.
Let's take a look at the first section code:
- function
loadXML(loaded)
{
- if
(loaded)
{
- xmlNode
=
this.firstChild;
- image
=
[];
- description
=
[];
- thumbnails =
[];
- total
=
xmlNode.childNodes.length;
- for
(i=0;
i<total;
i++)
{
- image[i]
=
xmlNode.childNodes[i].childNodes[0].firstChild.nodeValue;
- description[i]
=
xmlNode.childNodes[i].childNodes[1].firstChild.nodeValue;
- thumbnails[i]
= xmlNode.childNodes[i].childNodes[2].firstChild.nodeValue;
- thumbnails_fn(i);
- }
- firstImage();
- }
else
{
- content
=
"file not loaded!";
- }
- }
In the above section of code, the data from the XML file is
formatted and stored in various arrays. You can see how that is
done in great detail here:
http://www.kirupa.com/developer/mx2004/xml_flash_photogallery4.htm
- thumbnails
= [];
In this line of code, I am initializing a new variable called
thumbnails that will act as an array.
- thumbnails[i]
= xmlNode.childNodes[i].childNodes[2].firstChild.nodeValue;
- thumbnails_fn(i);
The above two lines (three if count the break caused by the
formatting) are contained in the for loop that goes through
each line of your XML file and assigns that data to the
appropriate variables.
The thumbnail data is the third element in the i-th node.
Recall that the numbering for positions in an XML file starts at
0, so the third element would be represented by a 2 - hence,
childNodes[2].
Each thumbnail element is itself a child of a larger node,
and that node is accessed by childNodes[i], and i is a variable
that runs between 0 and the total number of nodes in our XML
file. All of that data, is stored in our thumbnails array which
we initialized just a few lines ago!
Finally, I make a call to a function called thumbnails_fn. I
also pass the variable i to the thumbnails_fn function.
Let's talk about the thumbnails_fn function on the
next page!
|
page 4 of 7 |
|