Slideshow text hinzufügen?

haebel_007

Grünschnabel
Hallo,

Ich hab eine Slideshow doch ich möchte dieser noch text hinzufügen! Die Slideshow funktioniert mit einer xml datei:
Code:
<gallery timer="5" order="sequential" fadetime="2" looping="yes" xpos="0" ypos="0">
<image path="images/cordyline.jpg" />
<image path="images/forsythia.jpg" />
</gallery>

Jetzt möchte ich noch Text hinzufügen der ebenfalls von hier aus geladen werden müsste, in etwa so:
Code:
<gallery timer="5" order="sequential" fadetime="2" looping="yes" xpos="0" ypos="0">
<image path="images/cordyline.jpg" beschreibung="Dies war 2002" />
<image path="images/forsythia.jpg" beschreibung="Dies hier heute, blablablaa"/>
</gallery>

Ich habe versucht das ganze zu ändern aber irgendwie schnall ich den Code nicht so ganz! Weiss evt. jemand wie das einfach hinzuzufügen wäre Wäre natürlich genial wenn die Text position gleich als Attribut angegeben werden kann! Vielen Dank für die Hilfe
gruss haebel_007


Code:
/****************************/
/* Crossfading slide show   */
/* Author: Todd Dominey     */
/* http://whatdoiknow.org   */
/* http://domineydesign.com */
/****************************/

// 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;
			imageData.beschreibung = imageNode.attributes.beschreibung;
			imageArray[s]=imageData;
			imageNode = imageNode.previousSibling;		//Hier wird geprüft ob noch eine zeile mehr da ist
			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);
	thisLoader.load(data[num].beschreibung);
	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();
 

Anhänge

  • slideshow_as2.zip
    137,3 KB · Aufrufe: 50
Hi,

bevor ich da jetzt was ändere: Wo und wie soll der Text denn angezeigt werden? Hier ziehst Du das Attribut ja schon aus der Datei:
Code:
while (imageNode.nodeName != null) {
    imageData = new Object;
    imageData.path = imageNode.attributes.path;
    imageData.beschreibung = imageNode.attributes.beschreibung;
    imageArray[s]=imageData;
    imageNode = imageNode.previousSibling;		//Hier wird geprüft ob noch eine zeile mehr da ist
    s++;
}
Was genau meintest Du mit Position? Soll der Text bei jedem Bild an einer bestimmten Position erscheinen, z.B. so:
Code:
<image path="images/cordyline.jpg" beschreibung="Dies war 2002" x="50" y="30" />

Gruß
.
 
ohh sorry das hab ich vergessen ist nicht vom orginal! hab ich hineingeschrieben, habe gedacht müsste etwa so sein! ob das stimmt weiss ich eben nicht genau!

ich möchte den text weiss, verdana, grösse ca. 14 unten links anzeigen, wie gesagt schön wäre wenn man das ganze im xml definieren könnte aber ich weiss nicht wirklich wie ich das machen kann, nein die position müsste nur einmal definiert werden können! auch farbe, grösse etc. immer gleich! danke.
 
Hi,

Dein Ansatz war durchaus korrekt.

Ich habs nun mal "auf die Schnelle" gemacht - einfach einen MovieClip mit einem Textfeld unten in die Bühne gesetzt, dem der jeweilige Text zugewiesen wird.

Gruß
.
 

Anhänge

  • slideshow_as2.zip
    120,9 KB · Aufrufe: 77
Hi Datic,

deine Änderung kam mir wie gerufen!
Was mir jetzt noch zu meinem Glück fehlt, ist eine Pause-Taste, um die Slideshow zu unterbrechen.

Gruß, mak1100
 
Zurück