XML und Statusanzeige V2

mardazad

Erfahrenes Mitglied
Hi,
ich hab dann hier gestern doch noch eine Gallerie gefunden, mit der ich was anfangen kann. Leider haut auch hier mein Versuch eine Statusanzeige zu bauen nicht hin. Ich poste das Ganze mal in der Hoffnung, daß sich jemand meiner erbarmt und mit den Fehler zeigen kann.

Ich will, daß nur das gerade angeklickte bzw aktive Thumbnail mit 100%iger Deckkraft dargestellt wird, die anderen sollen bei 50% bleiben. (onRollover sollen es auch 100% alpha sein, onRollout wieder 50%) Es klappt auch soweit ganz ok, nur daß die Thumbs oft 100%ig deckend bleiben, wenn man die Scrollfunktion nutzt. Es scheint also nur ein kleiner Bug zu sein, den ich nicht finde?

Diesmal ist der Code etwas leichter verständlich ;) :

PHP:
function loadXML(loaded) {
	if (loaded) {
		xmlNode = this.firstChild;
		image = [];
		description = [];
		thumbnails = [];
		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;
			thumbnails[i] = xmlNode.childNodes[i].childNodes[2].firstChild.nodeValue;
			thumbnails_fn(i);
		}
		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();
		picture_num();
	} else if (Key.getCode() == Key.RIGHT) {
		nextImage();
		picture_num();
	}
};
Key.addListener(listen);
previous_btn.onRelease = function() {
	prevImage();
};
next_btn.onRelease = function() {
	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 += 2;
		}
	}
};
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();
		}
	}
}
function prevImage() {
	if (p>0) {
		p--;
		picture._alpha = 0;
		picture.loadMovie(image[p], 1);
		desc_txt.text = description[p];
		picture_num();
		thumbnail_mc[t0]._alpha = 100;
	}
}
function firstImage() {
	if (loaded == filesize) {
		picture._alpha = 0;
		picture.loadMovie(image[0], 1);
		desc_txt.text = description[0];
		picture_num();
	}
}


function picture_num() {
	current_pos = p+1;
	
	b=0;
			for (b=0; b<total; b++) { //status setzen
				if ( b != p) {
					anderethumbs = "t"+ b;
					thumbnail_mc[anderethumbs]._alpha = 50;
					
				}
				
				if (b == p){
					aktuellerthumb = "t" + b;
					thumbnail_mc[aktuellerthumb]._alpha = 100;
			}
			}
	
	pos_txt.text = current_pos+" / "+total;  
}


function thumbNailScroller() {
	// thumbnail code! 
	this.createEmptyMovieClip("tscroller", 1000);
	scroll_speed = 10;
	tscroller.onEnterFrame = function() {
		
		if ((this._ymouse>=thumbnail_mc._y) && (this._ymouse<=thumbnail_mc._y+thumbnail_mc._height)) {
			if ((this._xmouse>=(hit_right._x-40)) && (thumbnail_mc.hitTest(hit_right))) {
				thumbnail_mc._x -= scroll_speed;
			} else if ((this._xmouse<=(hit_left._x+40)) && (thumbnail_mc.hitTest(hit_left))) {
				thumbnail_mc._x += scroll_speed;
			}
		} else {
			delete tscroller.onEnterFrame;
		}
	};
}
function thumbnails_fn(k) {
	thumbnail_mc.createEmptyMovieClip("t"+k, thumbnail_mc.getNextHighestDepth());
	tlistener = new Object();
	
	tlistener.onLoadInit = function(target_mc) {
		target_mc._x = hit_left._x+(target_mc._width+5)*k;
		target_mc.pictureValue = k;
		target_mc._alpha = 50;
		
		target_mc.onRelease = function() {
			
			this._alpha = 100;
			target_mc.onRollOut = function(){
				this._alpha =100;
			}
			p = this.pictureValue-1;
			nextImage();
		};
		
		target_mc.onRollOver = function() {
			this._alpha = 100;
			thumbNailScroller();
		};
		
		target_mc.onRollOut = function() {
			this._alpha = 50;
			};
		picture_num();
	};
	image_mcl = new MovieClipLoader();
	image_mcl.addListener(tlistener);
	image_mcl.loadClip(thumbnails[k], "thumbnail_mc.t"+k);
}

Vielen lieben Dank im Vorraus
 

Anhänge

  • test.zip
    54,7 KB · Aufrufe: 17
Das einzige was ich da beim überfliegen des recht langen Codes entdecken kann ist, dass du mal

target_mc.onRelease = target_mc.onReleaseOutside = function() {

statt

target_mc.onRelease = function() {

benutzen solltest, da dies auch zu Bugs kommen kann. Ist dein PRoblem damit behoben bitte ich dich den Thread als erledigt zu Markieren, andernfalls poste die FLA damit wir sehen können wie das aufgebaut ist, wie der Fehler genau aussieht und wobei genau er auftritt. BEi der Funktion zum Scrollen wird ja nix mit Alpha geändert...

Liebe Grüße,
JEns
 
@Jens: das wage ich zu bezweifeln, da das "onReleaseOutside" in der Regel verwendet wird, um eben diese Fehler zu vermeiden (wenn der Benutzer die Maustaste ausserhalb des Objektes loslässt, soll das Ding ja auch wieder zurückgehen).

@Topic: Es ist nicht Sinn dieses Forums, aus dem Netz heruntergeladene Scripte und Vorlagen zu erweitern oder zu debuggen. In der Regel läuft das (was den Arbeitsaufwand betrifft) auf doppelte Arbeit hinaus: Code verstehen und Code anpassen - was oft mehr Arbeit bedeutet als eine komplette Neuerstellung (ich sagte es glaube ich bereits ;) ). Ich persönlich helfe gerne bei Kleinigkeiten, die wenige Zeilen betreffen oder eigenen Versuchen, aber wenn ich mich dazu erst in ein 150-Zeilen-Script einlesen muss, das jemand anders (nicht der Fragesteller) erstellt hat, fehlt mir dazu echt die Motivation. Scripte die ich selbst verfasst habe, passe ich in der Regel gerne an - ebenso ist es kein Problem, Musterbeispiele zu erstellen, aber wir sind kein Supportforum für fremde Vorlagen.

Fazit: Ich bin gerne bereit, eine meiner eigenen Galerien um eine Thumbnail-Statusanzeige zu erweitern, solange es nicht um eine komplette Neuerstellung geht. Ebenso helfe ich bei eigenen Versuchen weiter. Debugger für Heruntergeladenes sollen aber - mit Verlaub - die spielen, die jene Vorlagen erstellt haben. ;-]

- just my 2 Eurocent.

Gruß
.
 
Dofic hat gesagt.:
@Jens: das wage ich zu bezweifeln, da das "onReleaseOutside" in der Regel verwendet wird, um eben diese Fehler zu vermeiden (wenn der Benutzer die Maustaste ausserhalb des Objektes loslässt, soll das Ding ja auch wieder zurückgehen).

Öhm, deswegen sag ich ja dass er es benutzen solll....
 
Patsch! *laut an die Stirn schlag* ^^

Ich nehme alles zurück und behaupte das Gegenteil, da ich "nimm X statt Y" anstelle von "nimm statt X Y" gelesen hatte.

... dann sind wir tatsächlich der selben Meinung. ;)

Gruß
.
 
Hallo die Herren,

@Jens: vielen lieben Dank, es hat wohl geklappt

@Datic: ich bin noch nicht Pro genug, um sagen zu können welche Stellen des Scripts für einen Pro wichtig sind und welche nicht. Letztlich wars ja so wie gehofft: eine Kleinigkeit, die Jens auch so gesehen hat.
Hab nach dem Thread gestern, nach einer Gallerie gesucht, deren Code mir halbwegs verständlich erscheint und angefangen das Ganze so zu modifizieren, wie ichs gebrauchen kann. Wenn man nicht so gut scripten kann, bleibt einem manchmal nichts anderes übrig.

Davon, daß du eine deiner Gallerien umbauen würdest war nicht die Rede. Das wäre mir sehr recht gewesen, weil ich von dir immer sehr viel lerne. Jetzt habe ich einen mittlerweile knapp 400zeiligen Code, den ich nach ner halben Stunde Pause selber nicht mehr verstehe.

Übrigens war die .fla angehängt..

Naja Hauptsache es läuft,

vielen Dank nochmal
 
Davon, daß du eine deiner Gallerien umbauen würdest war nicht die Rede.
Sorry, habe ich nicht explizit erwähnt. :-(

Für die Zukunft: Eigene Sachen modifizier ich gerne (wenns im Rahmen bleibt) - da weiß ich ja, was ich verzapft habe und wo ich ansetzen muss. ;)

Gruß
.
 
Zurück