Solved

Need Help Creating an Array in Flash

Posted on 2009-07-16
7
251 Views
Last Modified: 2013-11-11
I have an older version of a Flash photo gallery (Flash 8/Action Script 1).  I'm using Flash CS3 to edit the source FLA file on an Windows XP Dell PC.  The gallery uses an external XML file to populate the gallery.  The original XML calls for :
       <pic>
        <image>gallery/photo01_web.jpg</image>
        <thumbnail>gallery/photo01_thumb.jpg</thumbnail>
        <caption>Insert caption here</caption>
        </pic>
I want to add a 4th node so that the user can download a hi-res version of the photo.  The XML would now be:
        <pic>
        <image>gallery/photo01_web.jpg</image>
        <thumbnail>gallery/photo01_thumb.jpg</thumbnail>
        <caption>Insert caption here</caption>
        <original>gallery/hires/photo01_hires.jpg</original>
       </pic>

The download button works on the first image, but will not work on the second, third, etc. images in the gallery.  If I go back to the first image after clicking the other images, the download for the first image no longer works.

The AS1 is below.  Can someone help me with make the array work>
function initGallery() {

	function loadXML(loaded) {

		if (loaded) {

			xmlNode = this.firstChild;

			total = xmlNode.childNodes.length;

			for (i=0; i<total; i++) {

				_root.small_image[i] = xmlNode.childNodes[i].childNodes[1].firstChild.nodeValue;

				_root.big_image[i] = xmlNode.childNodes[i].childNodes[0].firstChild.nodeValue;

				_root.description[i] = xmlNode.childNodes[i].childNodes[2].firstChild.nodeValue;

				_root.original[i] = xmlNode.childNodes[i].childNodes[3].firstChild.nodeValue;

				if (i == 0) {

					_root.loadGImage(_root.description[i],_root.big_image[i], _root.original[i]);

				}

				// end if   

				++_root.total_images;

			}// end of for

			createSmall();

			_root.downloadButton._visible = true;

		} else {

			content = "file not loaded!";

		}// end else if

	}// End of the function

	xmlData = new XML();

	xmlData.ignoreWhite = true;

	xmlData.onLoad = loadXML;

	if (_root.xml_file == undefined) {

		_root.xml_file = "images.xml";

	}

	// end if   

	xmlData.load(xml_file);

}// End of the function

function createSmall() {

	_root.smallContainer.createEmptyMovieClip("smallImageContainer",10);

	var _loc4 = 0;

	var _loc3 = 0;

	for (var _loc2 = 0; _loc2<_root.small_image.length; ++_loc2) {

		_root.smallContainer.imageContainer.attachMovie("smallImage","smallImage_"+_loc2,100+_loc2);

		m = _root.smallContainer.imageContainer["smallImage_"+_loc2];

		m._x = _loc3*50;

		m._y = 0;

		m.imageContainer.loadMovie(_root.small_image[_loc2],100);

		m.iData = Array();

		m.iData.big = _root.big_image[_loc2];

		m.iData.title = _root.description[_loc2];

		++_loc3;

	}// end of for

	_root.smallImageContainer._x = 5;

	_root.smallImageContainer._y = 0;

}// End of the function

function loadGImage(title, bigImgURL, originalURL) {

	_root.bigImage.imageContainer.loadMovie(bigImgURL,100);

	_root.bigImage.imageContainer._x = 0;

	_root.bigImage.imageContainer._y = 0;

	_root.title.text = title;

	_root.downloadButton.onRelease = function() {

		getURL(originalURL, "_blank");

	};

}// End of the function

function goFullScreen() {

	Stage.displayState = "fullScreen";

}// End of the function

function exitFullScreen() {

	Stage.displayState = "normal";

}// End of the function

function menuHandler(obj, menuObj) {

	if (Stage.displayState == "normal") {

		menuObj.customItems[0].enabled = true;

		menuObj.customItems[1].enabled = false;

	} else {

		menuObj.customItems[0].enabled = false;

		menuObj.customItems[1].enabled = true;

	}// end else if

}// End of the function

_root.description = new Array();

_root.small_image = new Array();

_root.big_image = new Array();

_root.original = new Array();

_root.total_images = 0;

initGallery();

var fullscreenCM = new ContextMenu(menuHandler);

fullscreenCM.hideBuiltInItems();

var fs = new ContextMenuItem("Go Full Screen", goFullScreen);

fullscreenCM.customItems.push(fs);

var xfs = new ContextMenuItem("Exit Full Screen", exitFullScreen);

fullscreenCM.customItems.push(xfs);

_root.menu = fullscreenCM;

downloadButton._visible = false;

Open in new window

0
Comment
Question by:dparker_alr
  • 4
  • 3
7 Comments
 

Author Comment

by:dparker_alr
Comment Utility
Increasing point value.
0
 
LVL 14

Expert Comment

by:TanLiHao
Comment Utility
Post the .fla together with the .xml. I cannot be sure what is wrong with only the code shown.
0
 

Author Comment

by:dparker_alr
Comment Utility
Thanks for hte help.  The EE system would not accept .FLA files for upload. I've posted them to the following location:  http://www.dfwserver.com/temp02
0
Free Trending Threat Insights Every Day

Enhance your security with threat intelligence from the web. Get trending threat insights on hackers, exploits, and suspicious IP addresses delivered to your inbox with our free Cyber Daily.

 
LVL 14

Expert Comment

by:TanLiHao
Comment Utility
I found your problem, and since I do not have the photos I could not really test out properly, but I'm quite sure this code will work.

I uploaded the .fla and renamed it as .fla.txt, so you rename the .fla back to .fla.

gallery071609.fla.txt
0
 

Author Comment

by:dparker_alr
Comment Utility
Thank you so much, but there's a problem with opening the file.  I downloaded and renamed it, but Flash CS3 keeps giving me an "unexpected file format" error.  I think this EE upload system may have corrupted it.  Can you copy-and-paste the AS code?
0
 
LVL 14

Accepted Solution

by:
TanLiHao earned 400 total points
Comment Utility
As the code is really scattered here and there, yeah you originally coded it like this so I didn't change them, so it's rather difficult for me to show which code belongs where but I will try.

Anyway I think you are unable to open it because I accidentally saved it as flash cs4 format. So try the new flash file and if you still cannot, see the code snippet on how to edit your code.

// Frame 1 Code in Action Layer, replace with this
 

function initGallery() {

	function loadXML(loaded) {

		if (loaded) {

			xmlNode = this.firstChild;

			total = xmlNode.childNodes.length;

			for (i=0; i<total; i++) {

				_root.small_image[i] = xmlNode.childNodes[i].childNodes[1].firstChild.nodeValue;

				_root.big_image[i] = xmlNode.childNodes[i].childNodes[0].firstChild.nodeValue;

				_root.description[i] = xmlNode.childNodes[i].childNodes[2].firstChild.nodeValue;

				_root.original[i] = xmlNode.childNodes[i].childNodes[3].firstChild.nodeValue;

				if (i == 0) {

					_root.loadGImage(_root.description[i],_root.big_image[i], _root.original[i]);

				}

				// end if   

				++_root.total_images;

			}// end of for

			createSmall();

			_root.downloadButton._visible = true;

		} else {

			content = "file not loaded!";

		}// end else if

	}// End of the function

	xmlData = new XML();

	xmlData.ignoreWhite = true;

	xmlData.onLoad = loadXML;

	if (_root.xml_file == undefined) {

		_root.xml_file = "images.xml";

	}

	// end if   

	xmlData.load(xml_file);

}// End of the function

function createSmall() {

	_root.smallContainer.createEmptyMovieClip("smallImageContainer",10);

	var _loc4 = 0;

	var _loc3 = 0;

	for (var _loc2 = 0; _loc2<_root.small_image.length; ++_loc2) {

		_root.smallContainer.imageContainer.attachMovie("smallImage","smallImage_"+_loc2,100+_loc2);

		m = _root.smallContainer.imageContainer["smallImage_"+_loc2];

		m._x = _loc3*50;

		m._y = 0;

		m.imageContainer.loadMovie(_root.small_image[_loc2],100);

		m.iData = Array();

		m.iData.big = _root.big_image[_loc2];

		m.iData.title = _root.description[_loc2];

		m.iData.originalURL = _root.original[_loc2];

		++_loc3;

	}// end of for

	_root.smallImageContainer._x = 5;

	_root.smallImageContainer._y = 0;

}// End of the function

function loadGImage(title, bigImgURL, originalURL) {

	_root.bigImage.imageContainer.loadMovie(bigImgURL,100);

	_root.bigImage.imageContainer._x = 0;

	_root.bigImage.imageContainer._y = 0;

	_root.title.text = title;

	_root.downloadButton.onRelease = function() {

		getURL(originalURL, "_blank");

	};

}// End of the function

function goFullScreen() {

	Stage.displayState = "fullScreen";

}// End of the function

function exitFullScreen() {

	Stage.displayState = "normal";

}// End of the function

function menuHandler(obj, menuObj) {

	if (Stage.displayState == "normal") {

		menuObj.customItems[0].enabled = true;

		menuObj.customItems[1].enabled = false;

	} else {

		menuObj.customItems[0].enabled = false;

		menuObj.customItems[1].enabled = true;

	}// end else if

}// End of the function

_root.description = new Array();

_root.small_image = new Array();

_root.big_image = new Array();

_root.original = new Array();

_root.total_images = 0;

initGallery();

var fullscreenCM = new ContextMenu(menuHandler);

fullscreenCM.hideBuiltInItems();

var fs = new ContextMenuItem("Go Full Screen", goFullScreen);

fullscreenCM.customItems.push(fs);

var xfs = new ContextMenuItem("Exit Full Screen", exitFullScreen);

fullscreenCM.customItems.push(xfs);

_root.menu = fullscreenCM;

downloadButton._visible = false;
 

// End frame 1 code
 

// go to library, search for sprite 5 (smallImage), double click it, go to the actions of the button, replace with this code
 

on (release)

{

    _root.loadGImage(iData.title, iData.big, iData.originalURL);

}

// end code

Open in new window

gallery071609.fla.txt
0
 

Author Closing Comment

by:dparker_alr
Comment Utility
It works beautifully!  Thank you so very, very much.
0

Featured Post

How to improve team productivity

Quip adds documents, spreadsheets, and tasklists to your Slack experience
- Elevate ideas to Quip docs
- Share Quip docs in Slack
- Get notified of changes to your docs
- Available on iOS/Android/Desktop/Web
- Online/Offline

Join & Write a Comment

In this tutorial I will show you how to provide a dynamic RTF document on your website generated with data from your database. For this tutorial you will need Microsoft Word or WordPad, WhizBase and Microsoft Access. In this tutorial I will show …
The last time I worked with Flash and Socket connections was in AS1. A recent project required flash connecting to a Socket, and sending receiving information - we figured it would be easy enough - we all know about the socket policy documents and c…
This tutorial will teach you the core code needed to finalize the addition of a watermark to your image. The viewer will use a small PHP class to learn and create a watermark.
The viewer will learn how to create a basic form using some HTML5 and PHP for later processing. Set up your basic HTML file. Open your form tag and set the method and action attributes.: (CODE) Set up your first few inputs one for the name and …

772 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

11 Experts available now in Live!

Get 1:1 Help Now