Gallerieskript kürzer schreiben, aber wie?

Denniz

Erfahrenes Mitglied
Ich hab eine Slide gallerie gebaut in der die vorschaubilder in der endlosschleife durchlaufen.
Hab ich mit einer einfache if-else Abfrage gemacht.
Wenn ein Pic eine bestimmte x Position erreicht wird dieser dann am anderen ende wieder eingefügt.

Meine Syntax ist so aufgebaut.

PHP:
stop();
var slideSpeed = 0.03;
var xPos = 655;
var posNew = 1310;

this.onEnterFrame = function() {
	//yMouse berechnen//
	currentMousey = Math.floor(this._ymouse);
	if (currentMousey>=287 && currentMousey<=350) {
		//xMouse berechnen und MC's bewegen//
		currentMousex = Math.floor(this._xmouse);
		pic1_mc._x = Math.floor(pic1_mc._x-(currentMousex*slideSpeed));
		pic2_mc._x = Math.floor(pic2_mc._x-(currentMousex*slideSpeed));
		pic3_mc._x = Math.floor(pic3_mc._x-(currentMousex*slideSpeed));
		
		//MC's neu positionieren//
		if (pic1_mc._x<=-xPos) {
			pic1_mc._x += posNew;
		} else if (pic2_mc._x<=-xPos) {
			pic2_mc._x += posNew;
		} else if (pic3_mc._x<=-xPos) {
			pic3_mc._x += posNew;
		}  else {
		if (pic1_mc._x>=655) {
			pic1_mc._x -= 1310;
		} else if (pic2_mc._x>=655) {
			pic2_mc._x -= 1310;
		} else if (pic3_mc._x>=655) {
			pic3_mc._x -= 1310;
		} else {
		}
	}
};


Das mit der berechnung von xmouse und ymouse ist nur damit die gallerieleiste anfängt sich zu bewegen wenn ich über den Vorschaubildern bin. Also nach links oder nach rechts.
Jetzt zum Problem:
Mit 3 Bildern ists ja noch ganz simpel aber ich hab 50 Vorschaupics für meine Gallery.
Gibts eine möglichkeit das ich den Code mit einer Schleife oder Array vereinfachen kann,
so da ich nicht 100x eine if Anweisung machen muß und nicht alle pics einzeln
im Code reinschreiben muß weil die heißen nur pic1_mc,pic2_mc,...,pic50_mc
Wäre echt nett wenn mir jemand helfen könnte sonst tipp ich hier noch bis nächsten monat.:)
 
Hi,

lege die Bilder in einem Array ab, merke Dir den Abstand zwischen den Bildern und bewege sie simultan, indem Du das Array in einer Schleife durchläufst. Um aus dem Bildbereich gewanderte Bilder am anderen Ende wirder einzufügen, arbeite ich mit meinen sog. "putLeft"- und "putRight"-Funktionen. Ein Beispiel in Pseudocode:
Code:
var img = new Array();
var anzahl = 99;
for (var i=0; i<anzahl; i++) { // in das Array packen:
    img[i] = "pic" + (i + 1) + "_mc";
}

this.onEnterFrame = function() {
    var spd = [ hier Versatz anhand der Mausposition berechnen ]
    for (var i=0; i<img.length; i++) {
        img[i]._x += spd; // alle Bilder gleich verschieben
    }
    for (var i=0; i<img.length; i++) { // Schleife dann nochmal durchlaufen:
        if (spd < 0) { // gehts nach links ...
            if (img[i]._x < [ links aus dem Bild ]) putRight(i);
        } else if (spd > 0) { // gehts nach rechts ...
            if (img[i]._x > [ rechts aus dem Bild ]) putLeft(i);
        }
    }
}

function putRight(n) { // Bild rechts anfügen
    if (n == 0) {
        img[n]._x = img[img.length - 1]._x + img[img.length - 1]._width + [ Abstand zwischen den Bildern ];
    } else {
        img[n]._x = img[n - 1]._x + img[n - 1]._width + [ Abstand zwischen den Bildern ];
    }
}

function putLeft(n) { // Bild links einfügen
    // macht das gleiche wie putRight, nur spiegelverkehrt: ist n == img.length - 1, so wird
    // das Bild links von img[0] gesetzt, ansonsten links von img[n + 1]
}

Gruß
.
 
Zurück