Home Tutorials Forums Articles Blogs Movies Library Employment Press

Go Back   ActionScript.org Forums > ActionScript Forums Group > ActionScript 2.0

Reply
 
Thread Tools Rate Thread Display Modes
Old 10-03-2006, 12:03 AM   #1
Richard Child
Richard Child
 
Join Date: Sep 2006
Location: London
Posts: 2
Default help req: auto slideshow with xml, how to add link to each image?

Hi,
I'm creating a 125 x 125 ad that cycles through a series of images each with an individual URL.
The image and link must be editable through an XML document that can be uploaded to the the CMS.

So far I'm cycling through a series of images that are loaded with an XML document, see http://design.wanadoo.uk.com/richard/rotating_buttons/ for an example.

My XML document looks like this - http://design.wanadoo.uk.com/richard...ons/images.xml

For each image node I have set the path to the image but also have two other attributes action="gotoURL" variables="http://www.orange.co.uk/"

My problem is manipulating this data so that each image is clickable and goes to the corresponding URL.

My AS is below.
Code:
// set random # variables - each must be 0 for first 'while' loop below
var randomNum = 0;
var randomNumLast = 0;

// parent container
var container_mc = this.createEmptyMovieClip("container",0);
// movie clip containers
container_mc.createEmptyMovieClip("loader1_mc",2);
container_mc.createEmptyMovieClip("loader2_mc",1);

// preload watcher
this.createEmptyMovieClip("watcher_mc",100);

// load xml
images_xml = new XML();
images_xml.ignoreWhite = true;
images_xml.onLoad = parse;
images_xml.load("images.xml");

function parse(success) {
	if (success) {
		imageArray = new Array();
		var root = this.firstChild;
		_global.numPause = Number(this.firstChild.attributes.timer * 1000);
		_global.order = this.firstChild.attributes.order;
		_global.looping = this.firstChild.attributes.looping;
		_global.fadetime = Number(this.firstChild.attributes.fadetime);
		_global.xpos = Number(this.firstChild.attributes.xpos);
		_global.ypos = Number(this.firstChild.attributes.ypos);
		var imageNode = root.lastChild;
		var s=0;
		while (imageNode.nodeName != null) {
			imageData = new Object;
			imageData.path = imageNode.attributes.path;
			//my added code//
			imageData.link = imageNode.attributes.action;
			imageData.link = imageNode.attributes.variables;
			//my added code//
			imageArray[s]=imageData;
			imageNode = imageNode.previousSibling;
			s++;
		}
		// place parent container
		container_mc._x = _global.xpos;
		container_mc._y = _global.ypos;
		// parse array
		imageArray.reverse();
		imageGen(imageArray);
		
	} else {
		trace('problem');
	}
}

// depth swapping
function swapPlace(clip,num) {
	eval(clip).swapDepths(eval("container_mc.loader"+num+"_mc"));
}

function loadImages(data,num) {
	if (i==undefined || i == 2) {
		i=2;
		createLoader(i,data,num);
		i=1;
	} else if (i==1) {
		createLoader(i,data,num);
		i=2;
	}
}
function createLoader(i,data,num) {
	thisLoader=eval("container_mc.loader"+i+"_mc");
	thisLoader._alpha=0;
	thisLoader.loadMovie(data[num].path);
	watcher_mc.onEnterFrame=function () {
		var picLoaded = thisLoader.getBytesLoaded();
		var picBytes = thisLoader.getBytesTotal();
		if (isNaN(picBytes) || picBytes < 4) {
			return;
		}
		if (picLoaded / picBytes >= 1) {
			swapPlace("container_mc.loader2_mc",1);
			alphaTween = new mx.transitions.Tween(thisLoader, "_alpha", mx.transitions.easing.Regular.easeOut,0,100,_global.fadetime,true);
			timerInterval = setInterval(imageGen,_global.numPause,data);
			delete this.onEnterFrame;
		}
	}
}
function imageGen(data) {
	// random, or sequential?
	if (_global.order=="random") {
		// choose random # between 0 and total number of images
		while (randomNum == randomNumLast) {
			randomNum = Math.floor(Math.random() * data.length);
			trace(randomNum);
		}
		loadImages(data,randomNum);
		randomNumLast = randomNum;
	} else if (_global.order=="sequential") {
		// start at 0, increment to total number of images, then drop back to zero when done
		if (p==undefined || p==data.length && _global.looping=="yes") { p=0; } else { break; }
		loadImages(data,p);
		p++;
	} else {
		trace ("order attribute in xml isn't correct - must specify either 'random' or 'sequential'");
	}
	clearInterval(timerInterval);
}
stop();
Thanks for your help.

Last edited by Richard Child; 10-03-2006 at 09:18 AM.
Richard Child is offline   Reply With Quote
Reply


Thread Tools
Display Modes Rate This Thread
Rate This Thread:

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is Off
HTML code is Off

Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
Reloading a dynamic image PaulJS ActionScript 1.0 (and below) 1 01-17-2007 03:33 PM
Please comment on slideshow class rune_kg ActionScript 2.0 15 04-01-2006 02:50 AM
Prevent Auto Image Smooth? victorysshadow Flash 8 General Questions 0 03-08-2006 08:55 PM
image gallery with text - text problem rokkpapa ActionScript 1.0 (and below) 2 04-24-2005 04:08 AM


All times are GMT. The time now is 07:38 AM.

///
Follow actionscriptorg on Twitter

 


Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.
Ad Management plugin by RedTyger
Copyright 2000-2013 ActionScript.org. All Rights Reserved.
Your use of this site is subject to our Privacy Policy and Terms of Use.