Photo
Slideshow Using
XML and Flash
by
kirupa |
28 December 2004
In this tutorial, you will learn how to create a
slideshow that loads image data from an XML file. While I
will explain the new concepts and code used in making the
slideshow, you must understand how my earlier photo gallery
explained in the
xml photo gallery tutorial works.
The reason is that I will extend
my earlier photo gallery code to work in this slideshow format.
The following is an example of a slideshow you will create:
[ the slideshow automatically
progresses to the next image ]
Most of this tutorial involves using recycled
code and interface elements from my earlier tutorial.
Therefore, you should download and open the final photo
gallery source file provided below:
If you want, you can test your
movie now itself. You should see a fully functioning photo
gallery.
Make sure you open the source
file from above into your version of Flash. Select the frame in the
action layer
and press F9 to view the Actions. Highlight all of the code you see
and overwrite it with the following code:
- delay
= 3000;
- //-----------------------
- function
loadXML(loaded)
{
- if
(loaded)
{
- xmlNode
=
this.firstChild;
- image
=
[];
- description
=
[];
- 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;
- }
- firstImage();
- }
else {
- content
=
"file not loaded!";
- }
- }
- xmlData
= new
XML();
- xmlData.ignoreWhite
= true;
- xmlData.onLoad
= loadXML;
- xmlData.load("images.xml");
-
/////////////////////////////////////
- listen
= new
Object();
- listen.onKeyDown
=
function()
{
- if
(Key.getCode()
== Key.LEFT)
{
- prevImage();
- }
else if
(Key.getCode()
== Key.RIGHT)
{
- nextImage();
- }
- };
- p =
0;
- this.onEnterFrame
=
function()
{
- filesize
=
picture.getBytesTotal();
- loaded
=
picture.getBytesLoaded();
- preloader._visible
=
true;
- if
(loaded
!=
filesize)
{
- preloader.preload_bar._xscale
=
100*loaded/filesize;
- }
else {
- preloader._visible
=
false;
- if
(picture._alpha<100)
{
- picture._alpha
+=
10;
- }
- }
- };
- function
nextImage()
{
- if
(p<(total-1))
{
- p++;
- if
(loaded
==
filesize)
{
- picture._alpha
=
0;
- picture.loadMovie(image[p],
1);
- desc_txt.text
=
description[p];
- picture_num();
- slideshow();
- }
- }
- }
- function
prevImage()
{
- if
(p>0)
{
- p--;
- picture._alpha
=
0;
- picture.loadMovie(image[p],
1);
- desc_txt.text
=
description[p];
- picture_num();
- }
- }
- function
firstImage()
{
- if
(loaded
==
filesize)
{
- picture._alpha
=
0;
- picture.loadMovie(image[0],
1);
- desc_txt.text
=
description[0];
- picture_num();
- slideshow();
- }
- }
- function
picture_num()
{
- current_pos
= p+1;
- pos_txt.text
=
current_pos+"
/ "+total;
- }
- function
slideshow()
{
- myInterval
=
setInterval(pause_slideshow,
delay);
- function
pause_slideshow()
{
- clearInterval(myInterval);
- if
(p
==
(total-1))
{
- p
=
0;
- firstImage();
- }
else
{
- nextImage();
- }
- }
- }
If you test your animation now,
you will see that the photo gallery cycles through your images
automatically using data from the images.xml file. If you
want, you can remove the next and previous buttons, for
you probably won't need it.
On the next page, I will point
out the few, yet important, differences between the photo gallery code and the
new slideshow code. After that, I will explain setInterval
and how it works..
Onwards to the
next page!
|
page 1 of 3 |
|
|